/// <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(); } } }
/// <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); }
/// <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); }