protected void SetSymbol(DZHSymbol symbol) { if ((currentSymbol == null) || (!currentSymbol.Equals(symbol))) { currentSymbol = symbol; OnSymbolChanged(); } }
public List <DZHTick> RequestLastTicks(DZHSymbol symbol) { if (symbol.Equals(currentSymbol)) { long pos = indexBuffer[symbol.Market][symbol.Code]; fileStream.Position = pos + 10; recordCount = reader.ReadInt32(); if (recordCount > recordCountReaded)//有新记录 { int recordsPerBlock = dataBlockSize / dataRecordSize; if (recordCount / recordsPerBlock > blockNumberReaded)//有新块号 { fileStream.Position += blockNumberReaded * 2; for (int j = blockNumberReaded; j < 25; j++) { blocks[j] = reader.ReadInt16(); } } int iRecord = 0; //记录 int iBlock = 0; //第iBlock块 iRecord = recordCountReaded; iBlock = iRecord / recordsPerBlock; List <DZHTick> results = new List <DZHTick>(); while (iBlock < 25 && blocks[iBlock] != -1) { int r = iRecord % recordsPerBlock;//块内记录号 while (iRecord < recordCount && r < recordsPerBlock) { results.Add(ReadARecord(dataStartOffset + blocks[iBlock] * dataBlockSize + r * dataRecordSize)); r = r + 1; iRecord = iRecord + 1; } iBlock = iBlock + 1; } recordCountReaded = recordCount; blockNumberReaded = iBlock; return(results); } else { return(null); } } else { return(RequestTicks(symbol)); } }