Exemplo n.º 1
0
        private void WriteMarket()
        {
            ConcurrentDictionary <string, List <MarketData> > dicMarket = new ConcurrentDictionary <string, List <MarketData> >();
            const int MaxCacheCount     = 500;
            int       currentCacheCount = 0;

            while (true)
            {
                try
                {
                    //LogHelper.Instance.Info("1");
                    ZMessage msg;
                    if (marketWriteCache.Count > 0 && marketWriteCache.TryDequeue(out msg))
                    {
                        //LogHelper.Instance.Info("1");
                        if (msg == null || msg.Count != 2)
                        {
                            continue;
                        }
                        var marketItem = BaseCommon.DeserializeMessage <MarketData>(msg);
                        if (dicMarket.ContainsKey(marketItem.Code))
                        {
                            dicMarket[marketItem.Code].Add(marketItem);
                        }
                        else
                        {
                            dicMarket.TryAdd(marketItem.Code, new List <MarketData> {
                                marketItem
                            });
                        }
                        currentCacheCount = currentCacheCount + 1;
                        marketDt          = DateTime.Now;
                    }
                    else
                    {
                        Thread.Sleep(10);
                    }
                    TimeSpan marketPlus = DateTime.Now - marketDt;
                    if (dicMarket.Count > 0 && (currentCacheCount > MaxCacheCount || marketPlus.Minutes != 0 || marketPlus.Seconds > 30))
                    {
                        foreach (string code in dicMarket.Keys)
                        {
                            List <MarketData> lstMarket;
                            dicMarket.TryRemove(code, out lstMarket);
                            BaseCommon.WriteMarketTxt(code, lstMarket);
                        }
                    }
                }

                catch (System.Exception ex)
                {
                    LogHelper.Instance.Info("异常:" + ex.ToString());
                    continue;
                }
            }
        }
Exemplo n.º 2
0
        private void WriteTran()
        {
            ConcurrentDictionary <string, List <MarketTransaction> > dicTran = new ConcurrentDictionary <string, List <MarketTransaction> >();
            const int MaxCacheCount     = 500;
            int       currentCacheCount = 0;

            while (true)
            {
                try
                {
                    ZMessage msg;
                    if (tranWriteCache.Count > 0 && tranWriteCache.TryDequeue(out msg))
                    {
                        //LogHelper.Instance.Info("1");
                        if (msg == null || msg.Count != 2)
                        {
                            continue;
                        }
                        var tranItem = BaseCommon.DeserializeMessage <MarketTransaction>(msg);
                        if (dicTran.ContainsKey(tranItem.Code))
                        {
                            dicTran[tranItem.Code].Add(tranItem);
                        }
                        else
                        {
                            dicTran.TryAdd(tranItem.Code, new List <MarketTransaction> {
                                tranItem
                            });
                        }
                        currentCacheCount = currentCacheCount + 1;
                        tranDt            = DateTime.Now;
                    }
                    else
                    {
                        Thread.Sleep(10);
                    }
                    TimeSpan tranPlus = DateTime.Now - tranDt;
                    if (dicTran.Count > 0 && (currentCacheCount > MaxCacheCount || tranPlus.Minutes != 0 || tranPlus.Seconds > 30))
                    {
                        foreach (string code in dicTran.Keys)
                        {
                            List <MarketTransaction> lstTran;
                            dicTran.TryRemove(code, out lstTran);
                            BaseCommon.WriteTranTxt(code, lstTran);
                        }
                    }
                }
                catch (System.Exception ex)
                {
                    LogHelper.Instance.Info("异常:" + ex.ToString());
                    continue;
                }
            }
        }