Maison >développement back-end >C++ >Async / Await vs Tâche de retour directement: Quand «Retour Await» est-il important?
et async
dans la programmation asynchrone est très courante, et de nombreuses personnes doutent de la différence entre await
et renvoyant directement les objets return await
. Cet article explore différentes scènes de ces deux méthodes. Task<T>
Task<T>
directement? return await
et l'utilisation Task<T>
sont fonctionnels. Cependant, il y a une exception: dans la structure return await
dans la phrase using
ou le bloc try
. return await
using
async
return await
Considérez le code suivant: Dans la première méthode,
<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>La méthode
libère immédiatement l'objet using
après le retour, et même avant sa fin. Cela est susceptible de provoquer des erreurs, car l'objet DoAnotherThingAsync()
est libéré prématurément. Foo
Foo
Cependant, dans la deuxième méthode, les mots clés
est libéré uniquement une fois la méthode await
terminée, empêchant ainsi toute erreur potentielle. DoAnotherThingAsync()
Foo
Conclusion
ou Task<T>
dans la structure return await
changera considérablement les circonstances particulières du comportement . La compréhension de cette différence peut assurer la mise en œuvre correcte des opérations asynchrones. using
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!