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);
 }
Ejemplo n.º 4
0
 internal void QueForProcessing(IProducerConsumerTask task)
 {
     ThreadPool.QueueUserWorkItem(new WaitCallback(task.DoWork));
 }