private void pushDataTodayXDR(string code, TodayXDR xdr) { lock (lockData) { this.ltDataTodayXDR.Add(new KeyValuePair <string, TodayXDR>(code, xdr)); } }
private void GetTodayXDRFromTradeXB() { StringBuilder sErrInfo = new StringBuilder(256); StringBuilder sResult = new StringBuilder(1024 * 1024); int idConn = 0; while (true) { idConn = ThreadGetDataFromTradeX.connectTDX(); if (idConn < 0) { Console.WriteLine("没有可用的TDX行情服务器! 请检查网络...... 重连......" + DateTime.Now); System.Threading.Thread.Sleep(1000); continue; } bool bRet = true; string code = ""; short getCounts = -1; while (getCode(ref code, ref getCounts)) { sResult.Clear(); sErrInfo.Clear(); byte market = 0; if (code.Substring(0, 1) == "6") { market = 1; } bRet = TradeXB.TdxHq_GetXDXRInfo(idConn, market, code, sResult, sErrInfo); if (bRet) { string[] rows = sResult.ToString().Split(new char[] { '\n' }); foreach (var row in rows) { string[] cols = row.Split(new char[] { '\t' }); if (cols.Count() >= 8 && (cols[0] == "0" || cols[0] == "1") && cols[2] == DateTime.Now.ToString("yyyyMMdd") && cols[3] == "1") { TodayXDR xdr = new TodayXDR { presentCash = Convert.ToDecimal(cols[4]), presentStock = Convert.ToDecimal(cols[6]), }; pushDataTodayXDR(code, xdr); } } } else { Console.Write(0); if (getCounts < 3) { pushCode(code, ++getCounts); } string szErrorInfo = sErrInfo.ToString(); Console.WriteLine(szErrorInfo); if (szErrorInfo.Contains("连接断开")) { System.Threading.Thread.Sleep(100); idConn = -1; break; } else { bRet = true; } //no break } } if (bRet) { if (idConn >= 0) { TradeXB.TdxHq_Disconnect(idConn); } break; } } subtractReferenced(); }