public static void ProcessMarketDataField(ThostFtdcDepthMarketDataField field) { var quotation = new Quotation(field); int volume = 0; Quotation preQuotation; if (quotationDic.TryGetValue(quotation.InstrumentID, out preQuotation) && preQuotation.TradingDay == quotation.TradingDay) { volume = quotation.Volume - preQuotation.Volume; } quotationDic[quotation.InstrumentID] = quotation; CandleCenter.ProcessQuotation(quotation, volume); DataSaver.AddQuotation(quotation); IQuotationReceiver[] receivers; lock (subscribeDic) { List <IQuotationReceiver> receiverList; if (!subscribeDic.TryGetValue(quotation.InstrumentID, out receiverList)) { return; } receivers = receiverList.ToArray(); } foreach (var item in receivers) { item.ProcessQuotation(quotation, volume); } }