C#多线程:所有的线程执行完毕之后,需要 做一个处理,但是如何知道所有线程执行完毕了呢?

我自己想用 ArrayList 把 每个 进程都装起来 ,

然后 在每个进程里面 进行 for 循环  判断 ArrayList 里面的 进程状态

可是这样 无法使用Response 了,而且 程序 也变得 乱七八糟


慕桂英546537
浏览 3607回答 2
2回答

HUH函数

你可以用WaitHandle确保所有线程都执行完毕。示例代码:&nbsp;AutoResetEvent[]&nbsp;watchers&nbsp;=&nbsp;new&nbsp;AutoResetEvent[10]; &nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;10;&nbsp;i++) &nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;j&nbsp;=&nbsp;i; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;watchers[j]&nbsp;=&nbsp;new&nbsp;AutoResetEvent(false); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动10个线程输出10个数字 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;Thread(()&nbsp;=> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(j); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;watchers[j].Set();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//线程执行完的时候通知 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}).Start(); &nbsp;} &nbsp;WaitHandle.WaitAll(watchers);&nbsp;&nbsp;//确保所有线程都执行完毕

aluckdog

Response 好像只能在一个线程中使用,可能你要将要输出的东西放在一个地方,再使用主线程的Response
打开App,查看更多内容
随时随地看视频慕课网APP