我试图找出Parallel.Foreach的异常和取消工作方式。所有示例似乎都涉及任务。
Parallel.Foreach中的异常会发生什么? - 我是否将整个循环包装在try / catch(AggregateException)中? - 循环中的所有其他任务(即使是尚未启动的任务)是否会在异常被捕获之前运行完成?
CancelationToken的相同问题
答案 0 :(得分:15)
简而言之,每个循环中的异常都会聚合并在AggregateException下显示。每当发生异常时,允许完成启动的循环,但不会启动其他循环。 ForEach确实有很多overloads允许一个人拥有本地init&最后块和体动作也需要ParallelLoopState循环体代码可用于检查另一个循环上的异常,然后在需要时自行协作。
请参阅提供其他信息的this article