Heim >Backend-Entwicklung >C++ >Asynchronisierte Methoden: `return act' vs. direkt zurückgeben `task`
Asynchronische Methode:
Vergleich mit direkt -when return await
? Task<T>
await
In der asynchronen Programmierung können Sie eine Methode zur Rückgabe schreiben, um die asynchrone Methode
-Objekts zurückzukehren. Obwohl diese beiden Methoden in den meisten Fällen äquivalent sind, ist in bestimmten Szenarien die Verwendung von asynchronen Methoden erforderlich. Task<T>
return await
Ein Schlüsselunterschied besteht darin, diese Methoden mit Task<T>
Blöcken mit return await
Anweisungen zu verwenden. Betrachten Sie die folgenden zwei Methoden:
In der ersten Methode wird das using
-Objekt unmittelbar nach der Rückkehr try
freigegeben. Dies kann jedoch lange vor der tatsächlichen Fertigstellung geschehen. Daher kann es aufgrund der vorzeitigen Veröffentlichung von
<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>
Im Gegenteil stellt die zweite Methode zur Verwendung von Foo
sicher, dass das DoAnotherThingAsync()
-Objekt erst nach DoAnotherThingAsync()
seine Aufgabe abgeschlossen wird. Dies liefert das erwartete Verhalten. Foo
oder einer Schnittstelle beinhaltet, müssen Sie eine asynchrone Methode mit await
verwenden. DoAnotherThingAsync()
Das obige ist der detaillierte Inhalt vonAsynchronisierte Methoden: `return act' vs. direkt zurückgeben `task`. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!