【问题标题】:Parallel.Foreach exceptions and cancelParallel.Foreach 异常和取消
【发布时间】:2011-07-01 20:00:22
【问题描述】:

我试图了解 Parallel.Foreach 的异常和取消是如何工作的。所有示例似乎都处理任务。

Parallel.Foreach 中的异常会发生什么?
- 我是否将整个循环包装在 try/catch(AggregateException) 中?
- 循环中的所有其他任务,包括尚未开始的任务,是否会在捕获异常之前运行完成?

对于 CancelationToken 的相同问题

【问题讨论】:

    标签: c# exception-handling task-parallel-library


    【解决方案1】:

    简而言之,每个循环中的异常都被聚合并呈现在 AggregateException 下。无论何时发生异常,已启动的循环都允许完成,但不会启动更多循环。 ForEach 确实有许多 overloads 允许一个本地 init 和 finally 块,并且主体操作也需要 ParallelLoopState 循环主体代码可以用来检查另一个循环上是否发生异常,然后在需要时自行协作中断它。

    请参阅提供更多信息的this article

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 2017-09-26
      • 1970-01-01
      相关资源
      最近更新 更多