/// <summary>归还线程</summary> /// <param name="thread"></param> private void Close(ThreadX thread) { if (thread == null) return; WriteLog("归还线程" + thread.Name); RunningCount--; //看这个线程是活的还是死的,死的需要清除 if (!thread.IsAlive) { if (Threads.Contains(thread)) { lock (SyncLock_Threads) { if (Threads.Contains(thread)) { Threads.Remove(thread); XTrace.WriteLine("归还" + thread.Name + "时发现,线程被关闭了,设计错误!"); } } } thread.Dispose(); } }
/// <summary>添加线程。本方法不是线程安全,调用者需要自己维护线程安全</summary> /// <returns></returns> private ThreadX AddThread() { //保证活动线程数不超过最大线程数 if (Threads.Count >= MaxThreads) return null; ThreadX thread = new ThreadX(); //thread.Name = Name + "线程池" + ThreadCount + "号线程"; thread.Name = String.Format("{0}线程池{1,3}号线程", Name, ThreadCount); thread.OnTaskFinished += new EventHandler<EventArgs>(thread_OnTaskFinished); ThreadCount++; ////暂停一下 //Thread.Sleep(10); WriteLog("新建线程:" + thread.Name); return thread; }