Example #1
0
 /// <summary>
 /// 线程工作执行完成后执行回调方法
 /// </summary>
 /// <param name="thread">当前执行线程</param>
 public void WorkComplete(ThreadExtend <T> thread)
 {
     lock (obj)
     {
         if (taskQueue.Count() > 0)
         {
             HandlerItem <T> taskItem = taskQueue.Dequeue();
             thread.SetWorkTask(taskItem);
             thread.StartThread();
         }
         else
         {
             workThread.Remove(thread.Key);
             if (freeThread.Count() >= min)
             {
                 allThread.Remove(thread.Key);
                 thread.Close();
                 thread.Dispose();
             }
             else
             {
                 thread.SetWorkTask(null);
                 freeThread.Enqueue(thread);
             }
             if (!workThread.Any())
             {
                 Dispose();
             }
         }
     }
 }