さまざまな戻り値の型を使用した同時非同期操作の管理
この例では、それぞれが異なる結果タイプを返す複数の非同期タスクを同時に実行し、それらの結果を効率的に取得する方法を示します。 3 つの非同期関数を想像してください:
<code class="language-csharp">public class AsyncOperations { private async Task<Cat> FeedCatAsync() { ... } private async Task<House> SellHouseAsync() { ... } private async Task<Tesla> BuyCarAsync() { ... } }</code>
Task.WhenAll
を使用してこれらを同時に実行し、結果を収集します。
<code class="language-csharp">// Instantiate the class containing asynchronous methods var operations = new AsyncOperations(); // Initiate the tasks var catTask = operations.FeedCatAsync(); var houseTask = operations.SellHouseAsync(); var carTask = operations.BuyCarAsync(); // Execute concurrently and wait for completion await Task.WhenAll(catTask, houseTask, carTask); // Retrieve results var cat = await catTask; var house = await houseTask; var car = await carTask; // Process the results...</code>
Task.WhenAll
は、続行する前にすべてのタスクが完了していることを確認します。 await
キーワードは、非同期操作を正しく処理するために不可欠です。結果を待っている間にメインスレッドがブロックされるのを防ぎます。 Task.Result
は結果を取得するための代替手段を提供しますが、ブロッキングの問題が発生する可能性があるため、一般的にはあまり好ましくありません。 このアプローチは、多様な戻り値を持つ同時非同期タスクを管理するクリーンで効率的な方法を提供します。
以上が異なるリターンタイプを持つ複数の非同期タスクから結果を効率的に実行および取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。