如何判断线程池里的所有线程都已经运行结束

qihjn 2008-11-01 04:05:49
有舒适办法吗?望高手指点。
...全文
659 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
不老神仙 2010-03-18
  • 打赏
  • 举报
回复
路过 学习 
怫悰 2008-11-02
  • 打赏
  • 举报
回复
冒泡帮顶接分

楼上的代码运行的时候是否包含一个线程?

线程,线程池,进程应用程序域的关系是什么?

试验试验不就知道了么?
找别人帮你编写呀?
qihjn 2008-11-01
  • 打赏
  • 举报
回复

int maxWorkerThreads, workerThreads;
int portThreads;
while (true)
{

ThreadPool.GetMaxThreads(out maxWorkerThreads, out portThreads);
ThreadPool.GetAvailableThreads(out workerThreads, out portThreads);
if (maxWorkerThreads-workerThreads==0)
{
MessageBox.Show("完成");
}
}

这样对吗?
aimeast 2008-11-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangfuchong 的回复:]
冒泡帮顶接分

判断ThreadPool.GetAvailableThreads()和 ThreadPool.GetMaxThreads()相等不行么?
[/Quote]

貌似这个方法不行吧?MaxThreads是最多的时候有多少个线程吧?

没有试验,尽是猜测……
qihjn 2008-11-01
  • 打赏
  • 举报
回复
能不能写个代码给我,GetAvailableThreads()的参数我看不明白
slimfeng 2008-11-01
  • 打赏
  • 举报
回复
可以采用1楼提供的办法
因为根据MSDN,GetAvailableThreads():检索由 GetMaxThreads 返回的线程池线程的最大数目和当前活动数目之间的差值。
而GetMaxThreads 检索可以同时处于活动状态的线程池请求的数目。
通过最大数目减可用数目就可以得到当前活动线程的数目,如果为零,那就说明没有活动线程,说明所有线程运行完毕。
tinalucky 2008-11-01
  • 打赏
  • 举报
回复
Thread类中的IsAlive()判断线程的状态,ThreadPool类的GetAvailableThreads()攻取运行线程
怫悰 2008-11-01
  • 打赏
  • 举报
回复
冒泡帮顶接分

判断ThreadPool.GetAvailableThreads()和 ThreadPool.GetMaxThreads()相等不行么?

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧