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é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
. 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
using
Dans la première méthode, l'objet try
sera publié immédiatement après le retour
<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>, 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!