Heim >Backend-Entwicklung >C++ >Rückgabe warten gegen Direktaufgabenrückgabe: Wann ist es wichtig?
Der subtile Unterschied in der asynchronen Programmierung:
und direkt return await
zurückgeben
Task<T>
In der asynchronen Programmierung ist die Auswahl von und direkter
return await
Task<T>
Die Vorteile von
Dieser subtile, aber wichtige Unterschied wird in return await
in den -blöcken erscheinen. Betrachten Sie das folgende Beispiel:
In diesem Beispiel, wenn try
eine asynchrone Operation ist, die lange Zeit ausgeführt wird, wird die using
-Anweisung nach der Rückkehr return await
<code class="language-csharp">Task<someresult> DoSomethingAsync() { using (var foo = new Foo()) { return foo.DoAnotherThingAsync(); } }</code>veröffentlicht. Zu diesem Zeitpunkt hat seine Aufgabe jedoch möglicherweise noch nicht abgeschlossen. Diese vorzeitige Veröffentlichung kann Unfälle oder Fehler im Code verursachen.
foo.DoAnotherThingAsync()
Im Gegenteil ist die Verwendung von using
in der asynchronen Methode unterschiedlich: DoAnotherThingAsync()
foo
DoAnotherThingAsync()
In diesem Fall stellen
Blockfreigabe return await
abgeschlossen werden. Dieses Verhalten steht im Einklang mit der erwarteten Funktion und verhindert potenzielle Fehler.
<code class="language-csharp">async Task<someresult> DoSomethingAsync() { using (var foo = new Foo()) { return await foo.DoAnotherThingAsync(); } }</code>Zusammenfassung
await
using
Obwohl foo
in den meisten Fällen direkt zurückkehren, wenn der
-Block verwendet wird, bietet die -Struktur einen Schlüsselvorteil. Durch die korrekte Freigabe von Ressourcen beiträgt bei der Aufrechterhaltung der Code -Integrität und zur Verhinderung von Unfällen.
Das obige ist der detaillierte Inhalt vonRückgabe warten gegen Direktaufgabenrückgabe: Wann ist es wichtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!