我正在创建一个新线程来在 foreach 循环的每次迭代期间执行一些代码。这些线程完成后,我希望主线程继续执行,但是我不确定如何执行此操作。我无法调用Thread.Join()每次迭代,因为这将阻止主线程继续 foreach 循环,直到创建的线程完成。这是代码块,其中testEnvironments是字符串类型的列表:
foreach (string s in testEnvironments)
{
myThread = new Thread(() => program.KickoffPricing(s));
myThread.Start();
Thread.Sleep(1000);
}
email.ComposeEmail();
Run Code Online (Sandbox Code Playgroud)
您需要将所有Threads存储在 a 中,List<Thread>并在启动所有这些 s 后创建一个单独的foreach循环Join()。
请注意,您可以通过使用Task代替Thread,或者更好的是,使用来使您的代码更简单、更高效Parallel.ForEach()。