Parallel.ForEach finally子句

Wil*_*lem 1 .net c# parallel-processing c#-4.0

我想知道是否有finally可以使用的Parallel.ForEach?

try
{
}
finally
{
}
Run Code Online (Sandbox Code Playgroud)

这有可能Parallel.ForEach吗?

循环完成后我需要做最后的事情.

Parallel.ForEach(someList, x =>
{
    //...
}, // Now i need to do a finally);
Run Code Online (Sandbox Code Playgroud)

我的问题是我最终尝试了我的Parallel.ForEach,但我不希望最终发生.它必须仅在并行任务完成时发生.

所以这对我不起作用:

try
{
   Parallel.ForEach(someList, x =>
   {
      //...
   });
}
finally
{
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点?

Chr*_*n.K 5

循环,finally不要一起去(除了Python).您只需将代码编写为在循环之后运行,以及循环之后.

如果要运行它而不管循环中的异常,请执行以下操作:

try
{
   Parallel.ForEach(...)
}
finally
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

第二个想法,也许OP使用这个Parallel.ForEach 重载,它允许你提供一个"localFinal"动作,每当一个线程(用于执行循环的一次迭代)完成时就会调用它.