1

finallyで使用できる可能性があるかどうかを知りたいParallel.ForEachですか?

try
{
}
finally
{
}

これは可能Parallel.ForEachですか?

ループが完了したら、finally を実行する必要があります。

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

私の問題は、Parallel.ForEach の周りで最終的に試してみることですが、最終的に発生させたくないということです。並列タスクが完了したときにのみ発生する必要があります。

だからこれは私にはうまくいきません:

try
{
   Parallel.ForEach(someList, x =>
   {
      //...
   });
}
finally
{
}

これを行う別の方法はありますか?

4

2 に答える 2

5

ループ とfinally一緒にはなりません (おそらくPythonを除く)。ループの後で、まあ、ループの後に実行するコードを書くだけです。

ループ内の例外に関係なく実行する場合は、次のようにします。

try
{
   Parallel.ForEach(...)
}
finally
{
   // ...
}

よく考えてみると、この Parallel.ForEachオーバーロードを使用する OP メントが考えられます。これにより、スレッド (ループのもう 1 つの反復を実行するために使用される) が完了するたびに呼び出される「localFinal」アクションを提供できます。

于 2012-05-03T13:58:39.667 に答える
2

try .. finally並行して実行されるアクションの内側または外側にブロックを配置します。

Parallel.ForEach(someList, x =>
{
    try
    {
    }
    finally
    {
    }
});

また:

try
{
    Parallel.ForEach(someList, x =>
    {
    });
}
finally
{
}

ユースケースによって異なりますが、質問からは明らかではありません。

于 2012-05-03T14:00:01.597 に答える