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; } } }
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; } } }