我正在创建一个新线程,在foreach循环的每次迭代期间执行一些代码。这些线程完成后,我希望主线程继续执行,但我不知道如何做到这一点。我不能为每次迭代调用Thread.Join()
,因为这将阻止主线程继续foreach循环,直到创建的线程完成。这是代码块,其中testEnvironments
是类型字符串List:
foreach (string s in testEnvironments)
{
myThread = new Thread(() => program.KickoffPricing(s));
myThread.Start();
Thread.Sleep(1000);
}
email.ComposeEmail();
答案 0 :(得分:4)
您需要将所有Thread
存储在List<Thread>
中,然后在启动所有foreach
之后创建一个Join()
循环。
请注意,使用Task
代替Thread
,或者更好的是Parallel.ForEach()
,您可以使代码更简单,更高效。