Heim > Backend-Entwicklung > C++ > `return act ay' vs. direkt eine Aufgabe zurückgeben: Warum wartet 'Warte' in 'Verwenden' Blöcke?

`return act ay' vs. direkt eine Aufgabe zurückgeben: Warum wartet 'Warte' in 'Verwenden' Blöcke?

Patricia Arquette
Freigeben: 2025-02-02 13:31:10
Original
231 Leute haben es durchsucht

vs. zurück zur Aufgabe direkt: return await Die Bedeutung in await blockiert using

Obwohl eine Aufgabe direkt aus der asynchronen Methode zurückgegeben wird und die Verwendung von

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage