threadEndLog = new Thread(new ThreadStart(CheckThreadPool));
threadEndLog.Start();
//检查线程池的方法
private void CheckThreadPool()
{
int workerThreads = 0;
int maxWordThreads = 0;
int compleThreads = 0;
ThreadPool.GetAvailableThreads(out workerThreads, out compleThreads);
ThreadPool.GetMaxThreads(out maxWordThreads, out compleThreads);
//当可用的线数与池程池最大的线程相等时表示线程池中所有的线程已经完成
if (workerThreads == maxWordThreads)
{
//当执行此方法后CheckThreadPool将不再执行
Log.WriteEndLog();
threadEndLog.Abort();
}
else
CheckThreadPool();
}
}
threadEndLog.Start();
//检查线程池的方法
private void CheckThreadPool()
{
int workerThreads = 0;
int maxWordThreads = 0;
int compleThreads = 0;
ThreadPool.GetAvailableThreads(out workerThreads, out compleThreads);
ThreadPool.GetMaxThreads(out maxWordThreads, out compleThreads);
//当可用的线数与池程池最大的线程相等时表示线程池中所有的线程已经完成
if (workerThreads == maxWordThreads)
{
//当执行此方法后CheckThreadPool将不再执行
Log.WriteEndLog();
threadEndLog.Abort();
}
else
{//每分检次一次线程池的状态
Thread.Sleep(60000);CheckThreadPool();
}
}
线程池状态监测
本文介绍了一种通过创建线程来定期检查线程池状态的方法。该方法通过比较线程池中的活动线程数与最大线程数来判断是否所有任务已完成,并决定是否停止检查线程。
2932

被折叠的 条评论
为什么被折叠?



