Parallel.Foreach异常并取消

adr*_*anm 18 c# exception-handling task-parallel-library

我试图找出Parallel.Foreach的异常和取消工作方式.所有示例似乎都涉及任务.

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

与CancelationToken相同的问题

Vin*_*ayC 16

简而言之,聚合每个循环中的异常并在AggregateException下显示.每当发生异常时,允许完成启动的循环,但不会启动其他循环.ForEach确实有很多重载,允许一个人拥有本地init和finally块,而body操作也采用ParallelLoopState,循环体代码可以用来检查另一个循环上的异常,然后在需要时自行协同破坏它.

请参阅提供其他信息的文章