Heim >Backend-Entwicklung >C++ >Wie kann ich effizient warten und Ergebnisse aus mehreren gleichzeitigen Aufgaben in C#abrufen?

Wie kann ich effizient warten und Ergebnisse aus mehreren gleichzeitigen Aufgaben in C#abrufen?

DDD
DDDOriginal
2025-01-28 03:06:14859Durchsuche

How Can I Efficiently Await and Retrieve Results from Multiple Concurrent Tasks in C#?

Verwaltung von gleichzeitigen Aufgaben und Ring -Ergebnissen in C#

Eine häufige Herausforderung bei der C# -Programmierung besteht darin, mehrere asynchrone Aufgaben zu behandeln, die gleichzeitig ausgeführt werden und individuelle Ergebnisse zurückgeben müssen. Dieser Artikel zeigt einen effizienten Ansatz mit Task.WhenAll.

Hier ist ein Szenario: Stellen Sie sich drei unabhängige Aufgaben vor: Füttern einer Katze, Verkauf eines Hauses und Kauf eines Autos. Jede Aufgabe ist asynchron und erzeugt ein einzigartiges Ergebnis.

<code class="language-csharp">private async Task<Cat> FeedCat() { /* ... */ }
private async Task<House> SellHouse() { /* ... */ }
private async Task<Tesla> BuyCar() { /* ... */ }

async Task Main()
{
    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;
}</code>

Die Task.WhenAll -Methode initiiert alle drei Aufgaben gleichzeitig. Nachdem WhenAll abgeschlossen ist (signalisiert alle Aufgaben abgeschlossen) können Sie das Ergebnis der einzelnen await -Operationen sicher abrufen. Asynchrone Methoden geben implizit bereits startete Aufgaben zurück.

Während der Verwendung Task.Result nach WhenAll möglich ist, da der Abschluss der Aufgaben garantiert ist, wird der await -Ansatz im Allgemeinen für die verbesserte Lesbarkeit und Robustheit in komplexeren Szenarien empfohlen.

Das obige ist der detaillierte Inhalt vonWie kann ich effizient warten und Ergebnisse aus mehreren gleichzeitigen Aufgaben in C#abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn