我在当前项目中使用TPL并使用Parallel.Foreach来旋转多个线程。 Task类包含Wait()以等待任务完成。像这样,我如何等待Parallel.ForEach完成然后执行下一个语句?
答案 0 :(得分:166)
您无需执行任何特殊操作,Parallel.Foreach()
将等待所有分支任务完成。从调用线程中,您可以将其视为单个同步语句,例如将其包装在try / catch中。
答案 1 :(得分:14)
你不需要使用Parallel.Foreach:它只在可用处理器的多个线程中执行foreach,但它会同步返回。
可以找到更多信息here
答案 2 :(得分:0)
正如这里的每个人所说-您无需等待。我可以从我的经验中补充: 如果您有一个异步主体要执行,并且您在内部等待,那么它只是运行了我的代码,并且没有等待任何事情。因此,我只是将 await 替换为 .Result -然后按预期工作。我找不到原因,是这样的:/