非同期プログラミングでは、同時に実行されている複数のタスクの結果が必要になることが多く、それぞれが異なるデータ型を返す可能性があります。 3 つのタスク例で説明してみましょう:
Cat
オブジェクトを返します。House
オブジェクトを返します。Tesla
オブジェクトを返します。続行するにはすべての結果が必要です。順次実行も可能ですが、同時実行の方がはるかに効率的です。 課題は、多様な結果タイプを処理することにあります。
Task.WhenAll
と個別の待機 この解決策には、指定されたすべてのタスクが完了するのを待つ Task.WhenAll
が含まれます。 完了後、await
:
<code class="language-csharp">var catTask = FeedCat(); var houseTask = SellHouse(); var carTask = BuyCar(); await Task.WhenAll(catTask, houseTask, carTask); var cat = await catTask; var house = await houseTask; var car = await carTask;</code>
Task.WhenAll
は、すべての子タスク (catTask
、houseTask
、carTask
) が完了した場合にのみ完了する親タスクを作成します。 その後、各子タスクを待機して、その特定の結果を個別に取得します。
以上が多様な結果タイプを使用して複数の非同期タスクを効率的に待つにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。