Пример #1
0
        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);
            }
        }
Пример #2
0
 void ExecuteMethod(BlockingCollection <MessageTick> listTicks, SaveTicks thread)
 {
     SaveTicks.Execute(listTicks, thread);
 }