異なる結果を持つ複数のタスクを待機しています 質問する

異なる結果を持つ複数のタスクを待機しています 質問する

私には3つのタスクがあります:

private async Task<Cat> FeedCat() {}
private async Task<House> SellHouse() {}
private async Task<Tesla> BuyCar() {}

コードを続行する前に、それらすべてを実行する必要があり、それぞれの結果も必要です。どの結果も互いに共通点はありません。

3 つのタスクを呼び出して完了するまで待機し、結果を取得するにはどうすればよいでしょうか?

ベストアンサー1

を使用した後WhenAll、 で結果を個別に取り出すことができますawait

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;

[非同期メソッドは常に「ホット」(すでに開始されている)タスクを返すことに注意してください。]

Task.Result(この時点ですべて正常に完了していることがわかっているため)を使用することもできます。ただし、await明らかに正しいので を使用することをお勧めしますが、Result他のシナリオでは問題が発生する可能性があります。

おすすめ記事