Maison > développement back-end > C++ > «Retour Await» vs Renvoie directement une tâche: Pourquoi «Await» compte-t-il dans les blocs «Utilisation»?

«Retour Await» vs Renvoie directement une tâche: Pourquoi «Await» compte-t-il dans les blocs «Utilisation»?

Patricia Arquette
Libérer: 2025-02-02 13:31:10
original
231 Les gens l'ont consulté

par rapport directement à la tâche: return await L'importance dans await blocks using

Bien qu'une tâche soit directement renvoyée de la méthode asynchrone et que l'utilisation de

est égale à l'utilisation de return await, il existe des différences subtiles mais importantes entre les deux lors de l'utilisation de la méthode d'emballage de bloc using.

Compte tenu des deux mêmes méthodes suivantes:

<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>
Copier après la connexion

Dans la première méthode, lors du retour à la tâche directement, le bloc using libérera immédiatement l'objet DoAnotherThingAsync à la méthode Foo pour renvoyer le code de contrôle et libérer immédiatement l'objet DoAnotherThingAsync. Cependant, la méthode peut ne pas être terminée, ce qui peut entraîner des erreurs potentielles.

Au contraire, lorsque vous utilisez return await, le flux de contrôle attendra avant l'exécution continue. Cela garantit que les blocs sont libérés uniquement après que l'opération asynchrone soit entièrement exécutée. Par conséquent, la deuxième méthode fonctionnera normalement et la première méthode peut être libérée. DoAnotherThingAsync using Foo

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal