Heim >Backend-Entwicklung >C++ >Async/wartet gegen direkt zurückgegebene Aufgabe: Wann wartet 'return` ay '?
Die Verwendung von
und async
in der asynchronen Programmierung ist sehr häufig, und viele Menschen zweifeln an dem Unterschied zwischen await
und direkt zurückgegebene return await
-Objekte. In diesem Artikel werden verschiedene Szenen dieser beiden Methoden untersucht. Task<T>
Task<T>
direkt zurückgeben können? return await
-Objekt und verwenden Task<T>
funktional. Es gibt jedoch eine Ausnahme: in der return await
-Struktur im Satz using
oder try
block. return await
using
async
return await
Betrachten Sie den folgenden Code: In der ersten Methode veröffentlicht
<code class="language-csharp">Task<someresult> DoSomethingAsync() { using (var foo = new Foo()) { return foo.DoAnotherThingAsync(); } } async Task<someresult> DoSomethingAsync() { using (var foo = new Foo()) { return await foo.DoAnotherThingAsync(); } }</code>die
-Methode sofort das using
-Objekt nach der Rückkehr und noch bevor es abgeschlossen ist. Dies führt wahrscheinlich zu Fehlern, da das DoAnotherThingAsync()
-Objekt vorzeitig freigegeben wird. Foo
Foo
In der zweiten Methode stellen jedoch die Schlüsselwörter in der zweiten Methode sicher, dass das
-Methode freigegeben wird, wodurch potenzielle Fehler verhindert werden. await
DoAnotherThingAsync()
Schlussfolgerung
Kurz gesagt, obwohl das Foo
Objekt normalerweise der Verwendung von
Das obige ist der detaillierte Inhalt vonAsync/wartet gegen direkt zurückgegebene Aufgabe: Wann wartet 'return` ay '?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!