ホームページ >バックエンド開発 >C++ >C#の複数の同時タスクから結果を効率的に待って取得するにはどうすればよいですか?

C#の複数の同時タスクから結果を効率的に待って取得するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-28 03:06:14837ブラウズ

How Can I Efficiently Await and Retrieve Results from Multiple Concurrent Tasks in C#?

C# での同時タスクの管理と結果の取得

C# プログラミングでよくある課題には、同時に実行して個別の結果を返す必要がある複数の非同期タスクの処理が含まれます。 この記事では、Task.WhenAll.

を使用した効率的なアプローチを示します。

これがシナリオです: 猫に餌をやる、家を売る、車を買うという 3 つの独立したタスクを想像してください。各タスクは非同期であり、固有の結果が生成されます。

<code class="language-csharp">private async Task<Cat> FeedCat() { /* ... */ }
private async Task<House> SellHouse() { /* ... */ }
private async Task<Tesla> BuyCar() { /* ... */ }

async Task Main()
{
    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 メソッドは、3 つのタスクすべてを同時に開始します。 WhenAll が完了すると (すべてのタスクが終了したことを通知します)、個別の await 操作を使用して各タスクの結果を安全に取得できます。 非同期メソッドは、すでに開始されたタスクを暗黙的に返します。

タスクの完了が保証されているため、Task.Result の後に WhenAll を使用することも可能ですが、より複雑なシナリオでは可読性と堅牢性が向上するため、一般に await アプローチが推奨されます。

以上がC#の複数の同時タスクから結果を効率的に待って取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。