複数の同時非同期操作とその結果を効率的に処理する
このガイドでは、複数の非同期タスクを同時に実行し、それぞれの結果を取得する方法を説明します。 3 つの独立した非同期操作があり、それぞれが固有の結果を生成するとします。目的は、これらのタスクを同時に実行し、すべてが完了したらそれぞれの結果にアクセスすることです。
Task.WhenAll
メソッドは洗練されたソリューションを提供します。このメソッドは、すべての入力タスクが完了した場合にのみ完了する単一のタスクを作成します。 次に、各タスクの結果を含む配列を返します。
実際の実装は次のとおりです。
<code class="language-csharp">Task<string> catTask = FeedCatAsync(); Task<bool> houseTask = SellHouseAsync(); Task<int> carTask = BuyCarAsync(); await Task.WhenAll(catTask, houseTask, carTask); string catResult = await catTask; bool houseResult = await houseTask; int carResult = await carTask;</code>
この例では、catTask
、houseTask
、および carTask
は非同期操作を表します。 Task.WhenAll
はそれらを同時に開始します。 await Task.WhenAll(...)
行は、3 つのタスクがすべて完了するまで実行を一時停止します。
完了後、元の各タスクを待つことで個々の結果にアクセスできます。結果は catResult
、houseResult
、および carResult
に保存され、さらに処理できるようになります。
非同期メソッドは呼び出されると、すぐに「ホット」タスク、つまりすでに開始されているタスクを返すということを覚えておくことが重要です。 したがって、実際の結果を取得するには、 (上記のとおり) または を使用する必要がありますawait
。 一般的には、明確さと例外処理機能の点で Task.Result
を使用することが推奨されます。await
以上が複数の同時非同期タスクから結果を調整および取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。