Heim >Backend-Entwicklung >C++ >„Task.Result' vs. „await Task': Wann sollten Sie welche verwenden?
Task<T>.Result
und await Task<T>
in der asynchronen Programmierung verstehen
Bei der asynchronen Programmierung hat die Wahl zwischen await Task<T>
und Task<T>.Result
erhebliche Auswirkungen auf die Leistung und die Ausnahmebehandlung. Lassen Sie uns die wichtigsten Unterschiede untersuchen.
Die GetName
Methode veranschaulicht beide Ansätze:
Verwenden von Task<T>.Result
:
<code class="language-csharp">public async Task<string> GetName(int id) { Task<string> nameTask = Task.Factory.StartNew(() => string.Format("Name matching id {0} = Developer", id)); return nameTask.Result; }</code>
nameTask.Result
blockiert den aktuellen Thread, bis die Aufgabe abgeschlossen ist. Dies ist bei lang andauernden Vorgängen ineffizient und kann möglicherweise zum Einfrieren der Anwendung führen.
Verwenden von await Task<T>
:
<code class="language-csharp">public async Task<string> GetName(int id) { Task<string> nameTask = Task.Factory.StartNew(() => string.Format("Name matching id {0} = Developer", id)); return await nameTask; }</code>
await nameTask
gibt den aufrufenden Thread frei, sodass andere Aufgaben gleichzeitig ausgeführt werden können. Die Methode wird erst fortgesetzt, wenn nameTask
abgeschlossen ist.
Kritische Unterscheidungen:
Task<T>.Result
Blöcke; await Task<T>
nicht.await Task<T>
gibt Ausnahmen direkt weiter; Task<T>.Result
verpackt sie in ein AggregateException
.Best Practices:
Task.Factory.StartNew
für Hintergrundaufgaben; Verwenden Sie stattdessen Task.Run
für eine höhere Effizienz und eine bessere Integration mit dem .NET-Thread-Pool.Task<T>.Result
und Task.Factory.StartNew
für dynamische Aufgabenparallelität verwendet werden können, wird in asynchronen Programmierkontexten im Allgemeinen davon abgeraten, await
für eine bessere Reaktionsfähigkeit und Wartbarkeit zu verwenden. Die Verwendung von await
ist der bevorzugte und robustere Ansatz für asynchrone Vorgänge.Das obige ist der detaillierte Inhalt von„Task.Result' vs. „await Task': Wann sollten Sie welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!