【发布时间】:2013-01-02 21:39:30
【问题描述】:
我正在创建一个新线程以在 foreach 循环的每次迭代期间执行一些代码。这些线程完成后,我希望主线程继续执行,但是我不知道该怎么做。我不能为每次迭代调用Thread.Join(),因为这将阻止主线程继续 foreach 循环,直到创建的线程完成。这是代码块,其中testEnvironments 是一个字符串类型的列表:
foreach (string s in testEnvironments)
{
myThread = new Thread(() => program.KickoffPricing(s));
myThread.Start();
Thread.Sleep(1000);
}
email.ComposeEmail();
【问题讨论】:
-
我希望这不是 UI 线程。
-
这不是 UI 线程。这是一个控制台应用程序。
-
您是否要同时运行所有线程?或者你想运行一个线程,等待,然后运行另一个线程?如果是后者,这真的需要在单独的线程上吗?
-
我想同时运行每个线程,然后在所有线程都完成后调用 ComposeEmail 方法。
-
然后根据您使用的 .Net/C# 版本,SLaks 建议的方法会很好。如果这些构造不可用,则可以使用
ManualResetEvent对象的集合。
标签: c# multithreading