Die Verwendung von Task.WhenAll
hat viele Vorteile, aber es verdoppelt mindestens die LOC erforderlich, um etwas zu schreiben.Task.WhenAll mit weniger Codezeilen
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;
Offensichtlich erwartet Listing1 Die 3-Operationen eine nach der anderen (3 × 10 Sekunden = 30 Sekunden), während Listing2 die 3 Operationen wartet auf die gleiche Zeit (nur 10 Sekunden für alle 3).
Allerdings ist der Code in Listing2 viel länger und schwerer zu lesen.
Meine Frage ist: Ist es möglich, die Logik von Listing2 mit etwas so einfach zu lesen und so kurz wie Listing1 schreiben?
Put "result1Task result2Task result3Task" in Array, und Ihr Code ist kürzer. –