Maison > développement back-end > C++ > Async / Await: Dois-je retourner une tâche ou un vide?

Async / Await: Dois-je retourner une tâche ou un vide?

Susan Sarandon
Libérer: 2025-02-01 14:06:10
original
368 Les gens l'ont consulté

Async/Await: Should I Return a Task or Void?

La valeur de retour de la méthode async / attente: tâche ou void?

Dans la programmation asynchrone, la valeur de retour de la méthode est

ou

aura un effet significatif. Cet article explorera les scènes applicables de chaque choix. async Task Retour à la tâche void

Habituellement, la méthode doit retourner . Cela permet d'appeler le code cette tâche et de suivre ses progrès si nécessaire. L'exception principale de cette règle est lorsque vous avez clairement besoin que

renvoie le type, tel que la gestion des événements.

async Retour à void Task await void Utilisez la méthode Retour Type

pour le marquer comme "haut fonctionnement asynchrone". Le comportement de ces opérations est différent lorsqu'il est anormal. Différent de la de la valeur de retour, l'anomalie

dans la méthode asynchrone ne sera pas observée sous défaut. Ils deviendront une exception non préparée et pourront déclencher le programme de traitement .

Considérez l'exemple suivant:

void async Dans cet exemple, les mots clés Task et void ne sont pas nécessaires car il n'est pas nécessaire de gérer explicitement les anomalies. Cependant, si des anomalies se produisent, elles ne seront pas observées et ne peuvent pas être traitées correctement. TaskScheduler.UnobservedTaskException

Exemple de traitement anormal

<code class="language-csharp">public static async void AsyncMethod2(int num)
{
    await Task.Factory.StartNew(() => Thread.Sleep(num));
}</code>
Copier après la connexion
Afin de démontrer les différences entre le traitement anormal entre et

méthodes asynchrones, veuillez considérer le code suivant: async await

Si vous appelez , vous pouvez observer l'anomalie et le voir comme toute autre anomalie non transformée. Cependant, si est appelé, il n'observera jamais les anomalies et sera traité par le programme de traitement

, ce qui conduira à des comportements inutiles. Best Practice

Task En tant que meilleure pratique, à moins que vous ayez clairement besoin que void renvoie le type, vous retournerez toujours

de la méthode
<code class="language-csharp">static async void f()
{
    await h();
}

static async Task g()
{
    await h();
}

static async Task h()
{
    throw new NotImplementedException();
}</code>
Copier après la connexion
. Cela garantit que les anomalies sont correctement gérées et que l'appelant peut choisir

la tâche et suivre ses progrès. f g Pour plus de détails, veuillez vous référer au document de Microsoft sur TaskScheduler.UnobservedTaskException /

meilleure pratique:

https://www.php.cn/link/d3ddedd999aa150f47c2d0a55cb17898

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