首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-01-08 
怎样判断线程是否结束?--在线等待比如:我开10个线程,怎样判断这10个线程已经都全部结束?[解决办法]bool fl

怎样判断线程是否结束?--在线等待
比如:我开10个线程,怎样判断这10个线程已经都全部结束?

[解决办法]
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
{
//未结束
}

[解决办法]
1 全局变量
设置变量值
循环检查

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

在线程外用
e.WaitOne或者System.Threading.WaitHandle.WaitAll等待
[解决办法]
上面代码没验证,小心
[解决办法]
http://blog.csdn.net/siyou/archive/2006/12/22/1453047.aspx

用这个吧,前面加一个FOR就可以了
[解决办法]
附加一句,一般判断线程都是这样子的

1、把线程的内容用类来封装,然后用xx.yy启动线程
2、在类的开头有一启动public变量,例如:treadalive=true,到结束的时候,treadalive=false
3、在主线程用xx.yy.变量来判断线程是否结束
[解决办法]
有很多办法啊,最常见的就是设置标志,比如

SortedList <string,bool> tListTag;

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

lock (tListTag)
{
tListTag[Thread.CurrentThread.Name] = false;
}
只要是false的,都是已经跑完的
[解决办法]
线程.IsAlive
[解决办法]
回调函数
[解决办法]
计数么

开始一个线程就+1

结束一个线程就-1

MS很多东西都是这么干的
[解决办法]
等待信号量System.Threading.WaitHandle.WaitAll好些。

热点排行