/// <summary> /// 读数据线程 /// </summary> protected override void DoWork() { try { while (m_runFlag) { while (m_kLineQueue.Count > 0) { USeKLine kLine = null; m_kLineQueue.TryDequeue(out kLine); Debug.Assert(kLine != null); FileStorer storer = GetFileStorer(kLine); try { storer.Write(ToKLineLog(kLine)); Interlocked.Increment(ref m_sotreCount); } catch (Exception ex) { Interlocked.Increment(ref m_errorStoreCount); USeNotifyEventArgs arg = new USeNotifyEventArgs(USeNotifyLevel.Error, "文件保存K线失败," + ex.Message); SafeRaiseNotifyEvent(this, arg); } } Thread.Sleep(1000); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
/// <summary> /// 读数据线程 /// </summary> private void DoWork() { try { while (m_runFlag) { while (m_marketDataQueue.Count > 0) { USeMarketData marketData = null; m_marketDataQueue.TryDequeue(out marketData); Debug.Assert(marketData != null); FileStorer storer = GetFileStorer(marketData); try { storer.Write(ToMarketDataLog(marketData)); Interlocked.Increment(ref m_sotreCount); } catch (Exception ex) { Interlocked.Increment(ref m_errorStoreCount); USeNotifyEventArgs arg = new USeNotifyEventArgs(USeNotifyLevel.Error, "文件保存行情数据失败," + ex.Message); SafeRaiseNotifyEvent(this, arg); } } Thread.Sleep(1000); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
private FileStorer GetFileStorer(USeKLine kLine) { string key = string.Format("{0}_{1}", kLine.Cycle.ToString(), kLine.InstrumentCode); FileStorer storer = null; if (m_fileStorerDic.TryGetValue(key, out storer) == false) { string fileName = Path.Combine(m_kLineFolderPath, GetTradeDayPath(), key + ".csv"); storer = new FileStorer(fileName); m_fileStorerDic.Add(key, storer); } return(storer); }
private FileStorer GetFileStorer(USeMarketData marketData) { string key = string.Format("{0}", marketData.Instrument.InstrumentCode); FileStorer storer = null; if (m_fileStorerDic.TryGetValue(key, out storer) == false) { //路径待处理 string fileName = Path.Combine(m_marketDataFolderPath, GetTradeDayPath(), key + ".csv"); storer = new FileStorer(fileName); m_fileStorerDic.Add(key, storer); } return(storer); }