Effiziente Handhabung mehrerer gleichzeitiger asynchroner Vorgänge und ihrer Ergebnisse
Diese Anleitung zeigt, wie Sie mehrere asynchrone Aufgaben gleichzeitig ausführen und deren individuelle Ergebnisse abrufen. Nehmen wir an, Sie haben drei unabhängige asynchrone Vorgänge, von denen jeder ein einzigartiges Ergebnis liefert. Das Ziel besteht darin, diese Aufgaben gleichzeitig auszuführen und auf die jeweiligen Ergebnisse zuzugreifen, sobald alle abgeschlossen sind.
Die Task.WhenAll
-Methode bietet eine elegante Lösung. Diese Methode erstellt eine einzelne Aufgabe, die erst abgeschlossen wird, wenn alle Eingabeaufgaben abgeschlossen sind. Anschließend wird ein Array zurückgegeben, das die Ergebnisse jeder Aufgabe enthält.
Hier eine praktische Umsetzung:
<code class="language-csharp">Task<string> catTask = FeedCatAsync(); Task<bool> houseTask = SellHouseAsync(); Task<int> carTask = BuyCarAsync(); await Task.WhenAll(catTask, houseTask, carTask); string catResult = await catTask; bool houseResult = await houseTask; int carResult = await carTask;</code>
In diesem Beispiel stellen catTask
, houseTask
und carTask
Ihre asynchronen Vorgänge dar. Task.WhenAll
initiiert sie gleichzeitig. Die Zeile await Task.WhenAll(...)
pausiert die Ausführung, bis alle drei Aufgaben abgeschlossen sind.
Nach Abschluss können Sie auf die einzelnen Ergebnisse zugreifen, indem Sie auf jede Originalaufgabe warten. Die Ergebnisse werden in catResult
, houseResult
und carResult
gespeichert und stehen zur weiteren Verarbeitung bereit.
Es ist wichtig, sich daran zu erinnern, dass asynchrone Methoden beim Aufruf sofort eine „heiße“ Aufgabe zurückgeben – eine, die bereits gestartet wurde. Daher müssen await
(wie oben gezeigt) oder Task.Result
verwenden, um die tatsächlichen Ergebnisse zu erhalten. Die Verwendung von await
wird aufgrund der Klarheit und der Möglichkeiten zur Ausnahmebehandlung im Allgemeinen bevorzugt.
Das obige ist der detaillierte Inhalt vonWie kann ich Ergebnisse aus mehreren gleichzeitigen asynchronen Aufgaben koordinieren und abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!