.NET 4.5 stellt Herausforderungen bei der Verwaltung gleichzeitiger, lang andauernder Aufgaben dar. Obwohl Task.Run()
einen grundlegenden Ansatz bietet, mangelt es ihm an der Effizienz und Eleganz einer vollständigen Nutzung asynchroner Funktionen.
Eine überlegene Lösung nutzt async
/await
, um wirklich asynchrone Sleep
Methoden zu erstellen, die Unterbrechungen und eine effiziente Wiederaufnahme ermöglichen. Task.WhenAll()
wartet gleichzeitig auf den Abschluss mehrerer Aufgaben.
Verbessertes Codebeispiel:
<code class="language-csharp">public static async Task Go() { Console.WriteLine("Initiating tasks"); Task<int> task1 = SleepAsync(5000); Task<int> task2 = SleepAsync(3000); await Task.WhenAll(task1, task2); int totalSleepTime = task1.Result + task2.Result; Console.WriteLine($"Total sleep time: {totalSleepTime} ms"); } private static async Task<int> SleepAsync(int ms) { Console.WriteLine($"Sleeping for {ms} ms"); await Task.Delay(ms); Console.WriteLine($"Sleep of {ms} ms COMPLETE"); return ms; }</code>
Dieser erweiterte Code verwendet async
und Task.Delay()
für nicht blockierende Verzögerungen innerhalb von SleepAsync
. Go
initiiert beide Aufgaben gleichzeitig über Task.WhenAll()
und ermöglicht so die parallele Ausführung. Nach Abschluss wird über die Eigenschaft Result
auf die Ergebnisse zugegriffen.
Das obige ist der detaillierte Inhalt vonWie kann ich mit .NET 4.5 effizient mehrere asynchrone Aufgaben parallel ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!