C#多线程-等待方法完成,然后再次运行。[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#多线程-等待方法完成,然后再次运行。[关闭]相关的知识,希望对你有一定的参考价值。

我有一个看起来像这样的方法:

while(intVariable < 4)) { DoSomeStuff(); if (intVariable == 3) { FinalDecide(); } if (rollCounter < 3) { Decide(args); } intVariable++; }

方法Decide()运行32个线程,我想确保在循环第二次开始Decide()之前第一次完成

内部判断,我有这样的东西:

for (int i = 0; i < 32; i++) { Thread t = new Thread(new ParameterizedThreadStart(Prepare)); t.IsBackground = true; t.Start(i); } runner = new System.Threading.Thread(WaitforThreads); runner.IsBackground = true; runner.Start();

即使我等待这32个线程在本次Decide方法的运行中完成,代码仍会继续执行,并在第一个方法完成之前再次触发Decide方法,这会导致错误。

我如何确保方法Decide在第二次启动之前完成WaitforThreads()方法?

我有一个看起来像这样的方法:while(intVariable <4)){DoSomeStuff();如果(intVariable == 3){FinalDecide(); } ...

答案
实现此目的的一种方法是使Decide方法返回已启动线程的Thread[],并将其保存到while循环可访问的变量中,然后在下次调用Decide之前加入所有线程:

以上是关于C#多线程-等待方法完成,然后再次运行。[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在主窗体关闭并且不等待线程完成后让线程运行

用c创建一个pthread,等待创建线程完成执行[关闭]

C ++如何等待在另一个线程上执行的方法然后主线程完成(VS2010)

springboot线程池关闭

再次运行应用程序时如何停止关闭的应用程序留下的线程? C#

java中请问如何等待一个线程结束在运行其他的代码?