在 foreach 循环中的其他线程运行时阻止主线程
本文关键字:线程 运行时 其他 foreach 循环 | 更新日期: 2023-09-27 17:50:32
我正在创建一个新线程,以便在foreach循环的每次迭代期间执行一些代码。 这些线程完成后,我希望主线程继续执行,但是我不确定如何执行此操作。 我不能为每次迭代调用Thread.Join()
,因为这将阻止主线程继续 foreach 循环,直到创建的线程完成。 下面是代码块,其中testEnvironments
是字符串类型的列表:
foreach (string s in testEnvironments)
{
myThread = new Thread(() => program.KickoffPricing(s));
myThread.Start();
Thread.Sleep(1000);
}
email.ComposeEmail();
您需要
将所有Thread
存储在一个List<Thread>
中,并在启动所有后创建一个单独的foreach
循环来Join()
它们。
请注意,您可以通过使用 Task
而不是 Thread
来使代码更简单、更高效,或者更好的是,Parallel.ForEach()
。