public void Run()
{
this.thread = new Thread(() =>
{
Console.WriteLine($"{DateTime.Now} Data simulator thread started");
if (!IsConnected)
Connect();
var q = new EventQueue(EventQueueId.Data, EventQueueType.Master, EventQueuePriority.Normal, 16, null)
{
Name = "Data Simulator Start Queue",
IsSynched = true
};
q.Enqueue(new OnQueueOpened(q));
q.Enqueue(new OnSimulatorStart(DateTime1, DateTime2, 0));
q.Enqueue(new OnQueueClosed(q));
this.framework.EventBus.DataPipe.Add(q);
this.running = true;
this.exit = false;
while (!this.exit)
{
LinkedListNode<DataSeriesObject> lastNode = null;
var node = this.emitters.First;
while (node != null)
{
var emitter = node.Data;
if (!emitter.Done)
{
if (emitter.Enqueue())
this.objCount++;
lastNode = node;
}
else
{
if (lastNode == null)
this.emitters.First = node.Next;
else
lastNode.Next = node.Next;
this.emitters.Count--;
emitter.dataQueue.Enqueue(new OnQueueClosed(emitter.dataQueue));
}
node = node.Next;
}
}
this.exit = false;
this.running = false;
Console.WriteLine($"{DateTime.Now} Data simulator thread stopped");
})
{
Name = "Data Simulator Thread",
IsBackground = true
};
this.thread.Start();
}