c#多线程,怎么等待别的线程都结束?谢谢!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#多线程,怎么等待别的线程都结束?谢谢!!相关的知识,希望对你有一定的参考价值。

for (int i = 0; i < 20; i++)//创建20个线程


Thread thread = new Thread(new ParameterizedThreadStart(real.startTest));
thread.Start(i);


// WaitHandle.WaitAll
//Thread.Sleep(50000);

outTxt(str, "d:\\s.txt");//输出全局string
...
startTest(object c).....

我的意思是创建了20个线程,每个线程在执行过程中会得到一些值,同时把这些值都付给了一个全局的字符串,我现在想把20个线程都执行完以后,再执行这句outTxt(str, "d:\\s.txt");//输出全局string;不知道应该怎么弄?
我不希望用sleep(50000)这些不确定的等待,如果在for循环里加入join(),可以实现,但这样的话我这20个线程就没意义了。

谢谢!!

加一个全局变量,完成一个线程变量加1,当变量达到20,执行outTxt 参考技术A 不要用线程,用Delegate,BeginInvoke有AsyncResult,Result有WaitHandle你可以WaitAll等待 参考技术B new Thread().start(). 参考技术C 无解

C#多线程等待回调

参考技术A 此处介绍一下 AutoResetEvent的方法

下面贴一下微软自带的一个方法。

这样点击后就是

sleep十秒后

我们会注意到里面有个方法

此处这个方法可以替换带参数启动一个new Thread。 上面这个方法已经非常简练,建议这么使用,下面这个方法挺繁琐的。
下面的方法其实也是带参数新建线程的一个方法。

我们先新建一个类

那么将原先工程中的替换一下

以上是关于c#多线程,怎么等待别的线程都结束?谢谢!!的主要内容,如果未能解决你的问题,请参考以下文章

C#多线程: 怎么知道 多个线程 执行完毕了?所有的线程执行完毕后 我要做处理

C#多线程等待回调

C#多线程:深入了解线程同步lock,Monitor,Mutex,同步事件和等待句柄(中)

c# 多线程 并发 Semaphore\AutoResetEvent都无法解决的需求~有人会吗?

c#:ThreadPool实现并行分析,并实现线程同步结束

C# 多线程的自动管理(线程池) 基于Task的方式