protected override void Consume() { while (true) { IProducerConsumerTask task = null; while (true) { if (m_queClientTickTask.Count == 0) { break; } task = null; m_queClientTickTask.TryDequeue(out task); if (task == null) { break; } task.DoWork(); } task = null; if (m_queTask.Count > 0) { m_queTask.TryDequeue(out task); } if (task != null) { if (task is ExitThreadTask) { return; // This signals our exit } task.DoWork(); } Thread.Sleep(1); } }
public void EnqueueTask(IProducerConsumerTask task, bool bClientTickTask = false) { EngineControler.Instance.QueForProcessing(task); }
internal void QueForProcessing(IProducerConsumerTask task) { ltasks.Enqueue(task); }
internal void QueForProcessing(IProducerConsumerTask task) { ThreadPool.QueueUserWorkItem(new WaitCallback(task.DoWork)); }