Mehrere Aufgaben gleichzeitig mit Task.WhenAll ausführen in C#
In dieser Lektion führst du zwei unabhängige asynchrone Aufgaben gleichzeitig aus und wartest mit Task.WhenAll, bis beide fertig sind.
Einführung
Gibt es mehrere asynchrone Aufgaben, die nicht voneinander abhängen, etwa Aufrufe zweier verschiedener APIs, musst du nicht warten, bis eine fertig ist, bevor die nächste startet. Task.WhenAll führt sie gleichzeitig aus und ist erst abgeschlossen, wenn alle fertig sind.
Die beiden Aufrufe Fetch(20) und Fetch(22) starten sofort, deshalb laufen ihre Wartezeiten parallel statt nacheinander ab. Task.WhenAll gibt ein Array mit den Ergebnissen in der Reihenfolge der Aufgaben zurück, und ihre Summe ist 42.
Ausführbares C#-Beispiel
using System;
using System.Threading.Tasks;
class Program
{
static async Task<int> Fetch(int value) { await Task.Delay(20); return value; }
static async Task Main()
{
int[] results = await Task.WhenAll(Fetch(20), Fetch(22));
Console.WriteLine(results[0] + results[1]);
}
}
42Mit dem Debugger üben
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
Alle Challenges