以下に、シンプルで簡単な方法とコード例を示します。
-
シンプルな方法: まず、System.Threading.Tasks.TaskクラスのWhenAllメソッドを使用して、非同期処理を待機します。具体的な手順は以下の通りです。
- 非同期処理を行いたいコードブロックを非同期メソッドとして定義します。
- foreachループ内で、非同期メソッドを呼び出しますが、戻り値のTaskオブジェクトをコレクションに追加します。
- foreachループの後で、WhenAllメソッドを使用して、全ての非同期処理が完了するのを待機します。
以下にコード例を示します。
この方法では、全ての非同期処理が完了するまで待機します。
-
コード例の解説: 上記のコード例では、非同期メソッド「DoAsyncProcessing」が実行されるforeachループ内で、非同期処理が行われる想定です。この例では、非同期処理として単純な1秒の遅延を示していますが、実際の処理はそれぞれの要件に合わせて実装してください。
foreachループ内で、「DoAsyncProcessing」メソッドを呼び出すたびに、戻り値のTaskオブジェクトをコレクション「tasks」に追加します。
最後に、Task.WhenAllメソッドを使用して、全ての非同期処理が完了するのを待機します。これにより、全ての非同期処理が終了した後に「全ての非同期処理が完了しました。」というメッセージが表示されます。
以上が、C#でforeachループの非同期処理を行い、最後に待機する方法のシンプルな解説とコード例です。この方法を利用して、大量のデータの並列処理などを効率的に実行することができます。