1. ホーム
  2. c#

[解決済み】複数のタスクを待機させ、異なる結果を得ることができる。

2022-03-26 17:30:42

質問

3つのタスクがあります。

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

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

3つのタスクが完了するのを待ち、結果を得るにはどうすればよいでしょうか。

どのように解決するのですか?

を使用した後 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 は、他のシナリオで問題を引き起こす可能性があります。