Пример #1
0
 /// <summary>
 /// 移除队列中指定名称的线程,并选择是否关闭线程
 /// </summary>
 /// <param name="queue">线程名</param>
 /// <param name="isCloseThread">true时关闭线程</param>
 public void Remove(GameProcessWrapper queue, bool isCloseThread)
 {
     try
     {
         for (int i = 0; i < TotalQueue.Count; i++)
         {
             if (TotalQueue[i].Thread.Name == queue.Thread.Name)
             {
                 if (i == 0)
                 {
                     TotalQueue[i].IsWorking = false;
                     return;
                 }
                 TotalQueue.RemoveAt(i);
                 return;
             }
         }
     }
     finally
     {
         if (isCloseThread)
         {
             queue.StopThread();
         }
     }
 }
Пример #2
0
 /// <summary>
 /// 判断队列中是否包含同名线程
 /// </summary>
 /// <param name="queue"></param>
 /// <returns></returns>
 public bool Contains(GameProcessWrapper queue)
 {
     foreach (var q in this.TotalQueue)
     {
         if (q.Thread.Name == queue.Thread.Name)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #3
0
 /// <summary>
 /// 将线程添加到消息队列末尾(自动排除同名元素)
 /// </summary>
 /// <param name="queue"></param>
 /// <returns>是否成功添加</returns>
 public bool Enqueue(GameProcessWrapper queue)
 {
     if (Contains(queue))
     {
         return(false);
     }
     if (queue.IsWorking)
     {
         return(false);
     }
     this.TotalQueue.Add(queue);
     return(true);
 }