Maison > développement back-end > C++ > Méthodes asynchrones: `Retour Await` par rapport à la« tâche »de retour directement - Quand« Await »est-il nécessaire?

Méthodes asynchrones: `Retour Await` par rapport à la« tâche »de retour directement - Quand« Await »est-il nécessaire?

Mary-Kate Olsen
Libérer: 2025-02-02 13:41:14
original
748 Les gens l'ont consulté

Async Methods: `return await` vs. Directly Returning `Task` – When is `await` Necessary?

Méthode asynchrone:

Comparaison avec directement -Qu moment return await? Task<T> await Dans la programmation asynchrone, vous pouvez écrire une méthode de retour pour utiliser la méthode asynchrone

, ou revenir directement à la méthode commune de l'objet

. Bien que ces deux méthodes soient équivalentes dans la plupart des cas, dans certains scénarios spécifiques, l'utilisation de méthodes asynchrones Task<T> est nécessaire. return await Task<T> Une différence clé est lors de l'utilisation de ces méthodes avec return await blocs avec

instructions. Considérez les deux méthodes suivantes:

using Dans la première méthode, l'objet try sera publié immédiatement après le retour

. Cependant, cela peut se produire longtemps avant l'achèvement réel. Par conséquent, en raison de la version prématurée de
<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>
Copier après la connexion
, il peut y avoir des erreurs dans la première version.

Foo Au contraire, la deuxième méthode d'utilisation DoAnotherThingAsync() garantit que l'objet DoAnotherThingAsync() est libéré uniquement après que Foo ait terminé sa tâche. Cela fournit un comportement attendu.

Par conséquent, lorsque vous devez assurer la libération correcte ou gérer certaines ressources dans l'opération asynchrone impliquant une opération asynchrone impliquant un objet de await ou une interface, vous devez utiliser une méthode asynchrone avec DoAnotherThingAsync(). 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