Parallel.Foreach 异常并取消

Parallel.Foreach exceptions and cancel

提问人:adrianm 提问时间:2/22/2011 最后编辑:Theodor Zouliasadrianm 更新时间:3/2/2023 访问量:15544

问:

我试图找出例外和取消是如何工作的。所有示例似乎都涉及任务。Parallel.Foreach

发生异常时会发生什么?Parallel.Foreach

  • 我是否将整个循环包装在 try/catch () 中?AggregateException
  • 循环中的所有其他任务(甚至尚未启动的任务)是否会在捕获异常之前运行完成?

同样的问题。CancellationToken

C# 异常 task-parallel-library parallel.foreach 取消

评论


答:

17赞 VinayC 2/22/2011 #1

简言之,每个循环中的异常都会被聚合并显示在 下。每当发生异常时,允许启动的循环完成,但不会启动进一步的循环。 确实有许多重载,允许一个人拥有本地 init & finally 块,并且 body action 也采用 ParallelLoopState,循环体代码可以使用它来检查另一个循环上是否发生异常,然后在需要时自行中断它。AggregateExceptionForEach

请参阅此文章,其中提供了其他信息

评论

0赞 Bernard Borg 2/28/2023
链接已断开。
0赞 VinayC 3/2/2023
@BernardBorg,修复了链接。