我怎么能等到Parallel.ForEach完成

时间:2011-10-25 09:11:28

标签: c# task-parallel-library

我在当前项目中使用TPL并使用Parallel.Foreach来旋转多个线程。 Task类包含Wait()以等待任务完成。像这样,我如何等待Parallel.ForEach完成然后执行下一个语句?

3 个答案:

答案 0 :(得分:166)

您无需执行任何特殊操作,Parallel.Foreach()将等待所有分支任务完成。从调用线程中,您可以将其视为单个同步语句,例如将其包装在try / catch中。

答案 1 :(得分:14)

你不需要使用Parallel.Foreach:它只在可用处理器的多个线程中执行foreach,但它会同步返回。

可以找到更多信息here

答案 2 :(得分:0)

正如这里的每个人所说-您无需等待。我可以从我的经验中补充: 如果您有一个异步主体要执行,并且您在内部等待,那么它只是运行了我的代码,并且没有等待任何事情。因此,我只是将 await 替换为 .Result -然后按预期工作。我找不到原因,是这样的:/