Maison > développement back-end > C++ > Await vs Task.Result : quand dois-je utiliser chacun en C# ?

Await vs Task.Result : quand dois-je utiliser chacun en C# ?

Barbara Streisand
Libérer: 2025-01-22 23:24:12
original
979 Les gens l'ont consulté

Await vs. Task.Result: When Should I Use Each in C#?

Bonnes pratiques d'Await et Task.Result en programmation asynchrone C#

La programmation asynchrone en C# implique souvent des tâches, qui encapsulent des unités de travail de longue durée. Deux façons courantes de gérer les tâches sont await et Task.Result. Bien que les deux puissent obtenir des résultats similaires, il existe des différences subtiles dans leur comportement.

Le mot-clé

await suspendra l'exécution de la méthode en cours jusqu'à ce que la tâche en attente soit terminée. Pour une tâche entièrement terminée, l'expression await renvoie directement le résultat de la tâche, rendant le code plus propre et améliorant potentiellement les performances.

En revanche, Task.Result récupère immédiatement les résultats de la tâche. Si la tâche échoue, elle lèvera une exception AggregateException et pourra provoquer un blocage dans certains scénarios asynchrones. Par conséquent, il est généralement recommandé d’utiliser await au lieu de Task.Result.

Stephen Cleary recommande d'utiliser await au lieu de Task.Result, principalement pour les deux raisons suivantes :

  1. Gestion des exceptions : await n'encapsule pas les exceptions dans AggregateException, simplifiant la gestion des erreurs dans le code asynchrone.
  2. Éviter les blocages : Result et Wait peuvent provoquer des blocages, en particulier lorsqu'ils sont utilisés dans une méthode asynchrone. await Éliminez ce risque en garantissant l'achèvement de la tâche avant de reprendre l'exécution.

Guide d'utilisation :

Comme recommandé par Cleary, les directives suivantes s'appliquent à l'utilisation de Result, Wait et await :

  • Code d'application asynchrone : Utilisez toujours await.
  • Code utilitaire asynchrone : Result et Wait peuvent être utilisés avec prudence et avec une documentation appropriée.
  • Codes de tâches parallèles : Result et Wait sont appropriés.

Le respect de ces directives garantit une gestion correcte du code asynchrone, minimise les blocages et simplifie la gestion des erreurs.

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!

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