static void Execute(Object listTicks, Object t) { if (listTicks is BlockingCollection <MessageTick> ) { ITicksContainer containerTicks = new TicksDataTableContainer(); DateTime lastSave = DateTime.Now; BlockingCollection <MessageTick> list = (BlockingCollection <MessageTick>)listTicks; SaveTicks thread = (SaveTicks)t; thread.isWorking = true; while (thread.isWorking) { MessageTick messageTick = null; while (list.TryTake(out messageTick, TimeSpan.FromMilliseconds(10))) { containerTicks.AddEntry(messageTick.Symbol, (int)messageTick.Value, messageTick.DecimalValue, messageTick.DateTime, (byte)messageTick.TickType, messageTick.Provider); AddToSymbolCache(messageTick); if (((int)(DateTime.Now - lastSave).TotalMilliseconds) >= thread.saveIntervalInMs) { // SaveTicks SaveAndSendTicks(containerTicks, thread.ticksRepository); containerTicks = new TicksDataTableContainer(); lastSave = DateTime.Now; } } Thread.Sleep(20); } if (containerTicks.Count() > 0) { SaveAndSendTicks(containerTicks, thread.ticksRepository); } thread.isFinished = true; //Console.WriteLine("FINISHED! Total Save Ticks: " + TotalSavedObjects + "; Total Received Ticks: " + DeserializeTicks.TotalDesObjects); } }
void ExecuteMethod(BlockingCollection <MessageTick> listTicks, SaveTicks thread) { SaveTicks.Execute(listTicks, thread); }