Ejemplo n.º 1
0
        /// <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();
            }
        }
Ejemplo n.º 2
0
        /// <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;
        }