我试图了解Parallel.Foreach
中异常和取消操作的处理方式。所有示例似乎都涉及到任务。
Parallel.Foreach
中发生异常会怎样?
- 我是否需要在try/catch块中包含整个循环(使用
AggregateException
)? - 在异常被捕获之前,循环中的所有其他任务,即使是未启动的任务,是否都会运行至结束?
对于CancellationToken
,同样有这些问题。
我试图了解Parallel.Foreach
中异常和取消操作的处理方式。所有示例似乎都涉及到任务。
Parallel.Foreach
中发生异常会怎样?
AggregateException
)?对于CancellationToken
,同样有这些问题。
AggregateException
下。每当出现异常时,已启动的循环将允许完成,但不会启动更多的循环。 ForEach
确实有许多重载,允许使用本地init和finally块,并且body动作还采用ParallelLoopState,循环体代码可以使用它来检查另一个循环中是否发生异常,然后自行协作性地中断。
请参见此文章以获取更多信息。