vs. zurück zur Aufgabe direkt: return await
Die Bedeutung in await
blockiert using
gleich der Verwendung von return await
ist, gibt es subtile, aber wichtige Unterschiede zwischen den beiden bei der Verwendung der using
-Blockverpackungsmethode.
unter Berücksichtigung der folgenden zwei gleichen Methoden:
<code class="language-csharp">Task<TResult> DoSomethingAsync() { using (var foo = new Foo()) { return foo.DoAnotherThingAsync(); } } async Task<TResult> DoSomethingAsync() { using (var foo = new Foo()) { return await foo.DoAnotherThingAsync(); } }</code>
In der ersten Methode wird bei direkter Rückkehr zur Aufgabe der using
-Block das DoAnotherThingAsync
-Objekt sofort an die Foo
-Methode veröffentlicht, um den Steuercode zurückzugeben und das DoAnotherThingAsync
-Objekt sofort freizugeben. Die -Methode kann jedoch nicht abgeschlossen sein, was zu möglichen Fehlern führen kann.
Im Gegenteil, bei der Verwendung von return await
wird der Steuerfluss vor der fortlaufenden Ausführung warten. Dies stellt sicher, dass Blöcke erst nach vollständiger Ausführung des asynchronen Betriebs freigegeben werden. Daher funktioniert die zweite Methode normal, und die erste Methode kann veröffentlicht werden. DoAnotherThingAsync
using
Foo
Das obige ist der detaillierte Inhalt von`return act ay' vs. direkt eine Aufgabe zurückgeben: Warum wartet 'Warte' in 'Verwenden' Blöcke?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!