Task.WhenAll
を使用すると多くのメリットがありますが、少なくとも何かを書くのに必要なLOCは2倍になります。Task.WhenAllコード数が少ない
Listing1
var result1 = await SomeLongRunningOperation1().ConfigureAwait(false);
var result2 = await SomeLongRunningOperation2().ConfigureAwait(false);
var result3 = await SomeLongRunningOperation3().ConfigureAwait(false);
Listing2
var result1Task = SomeLongRunningOperation1();
var result2Task = SomeLongRunningOperation2();
var result3Task = SomeLongRunningOperation3();
await Task.WhenAll(
result1Task,
result2Task,
result3Task)
.ConfigureAwait(false);
var result1 = result1Task.Result;
var result2 = result2Task.Result;
var result3 = result3Task.Result;
Listing2 3回の操作でを待っている間当然Listing1は、3つの操作次々(3×10秒= 30秒)待ちます同じ時間(3秒間にわずか10秒)。
しかし、リスト2のコードは、読むのがずっと長くなります。
私の質問: リスト2のロジックを読みやすく、リスト1のようなもので書くことはできますか?
は、配列内の「result1Task result2Task result3Task」を入れて、あなたのコードが短くなっています。 –