怎样判断线程是否结束?--在线等待

mafgm 2007-07-31 03:51:02
比如:我开10个线程,怎样判断这10个线程已经都全部结束?
...全文
713 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
songcan 2007-07-31
  • 打赏
  • 举报
回复
等待信号量与设置标志位,回调函数皆可,哪一个都可实现





liusong_china 2007-07-31
  • 打赏
  • 举报
回复
IsAlive...
greenery 2007-07-31
  • 打赏
  • 举报
回复
等待信号量System.Threading.WaitHandle.WaitAll好些。
KKND2006 2007-07-31
  • 打赏
  • 举报
回复
计数么

开始一个线程就+1

结束一个线程就-1

MS很多东西都是这么干的
shrinerain 2007-07-31
  • 打赏
  • 举报
回复
回调函数
Code従業員 2007-07-31
  • 打赏
  • 举报
回复
线程.IsAlive
ezhuyin 2007-07-31
  • 打赏
  • 举报
回复
有很多办法啊,最常见的就是设置标志,比如

SortedList<string,bool> tListTag;

开跑的时候设定一个名字Thread.Name,然后在结束的时候,用

lock (tListTag)
{
tListTag[Thread.CurrentThread.Name] = false;
}
只要是false的,都是已经跑完的
CTBOK 2007-07-31
  • 打赏
  • 举报
回复
附加一句,一般判断线程都是这样子的

1、把线程的内容用类来封装,然后用xx.yy启动线程
2、在类的开头有一启动public变量,例如:treadalive=true,到结束的时候,treadalive=false
3、在主线程用xx.yy.变量来判断线程是否结束
CTBOK 2007-07-31
  • 打赏
  • 举报
回复
http://blog.csdn.net/siyou/archive/2006/12/22/1453047.aspx

用这个吧,前面加一个FOR就可以了
Fan52027 2007-07-31
  • 打赏
  • 举报
回复
上面代码没验证,小心
foyuan 2007-07-31
  • 打赏
  • 举报
回复
1 全局变量
设置变量值
循环检查

2
System.Threading.ManualResetEvent e = new System.Threading.ManualResetEvent(false);
然后把这个e传进线程的方法中,在里面调用e.Set()表示线程结束

在线程外用
e.WaitOne或者System.Threading.WaitHandle.WaitAll等待
Fan52027 2007-07-31
  • 打赏
  • 举报
回复
bool flag=false;
List<Thread> array=new List<Thread>();
//添加Threads
for(int i=0;i<array.Length;i++)
{
if(array[i]!=null)
{
flag=true;//没有结束
Break;
}
}

if(flag==false)
{
//全部结束
}
else
{
//未结束
}
mafgm 2007-07-31
  • 打赏
  • 举报
回复
是不是分太少啊?

110,545

社区成员

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

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

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