web-dev-qa-db-ja.com

Parallel.ForEachが完了するまでどのように待つことができますか

現在のプロジェクトでTPLを使用し、Parallel.Foreachを使用して多くのスレッドをスピンしています。 Taskクラスには、タスクが完了するまで待機するWait()が含まれています。そのように、Parallel.ForEachが完了するのを待ってから、次のステートメントを実行する方法はありますか?

107
VJAI

特別なことをする必要はありません。Parallel.Foreach()は、分岐したすべてのタスクが完了するまで待機します。呼び出しスレッドから、それを単一の同期ステートメントとして扱い、たとえばtry/catch内にラップすることができます。

175
Henk Holterman

Parallel.Foreachでは必要ありません。使用可能なプロセッサと同じ数のスレッドでforeachを実行するだけですが、同期的に戻ります。

詳細については、こちらをご覧ください こちら

15
Louis Kottmann