Maison > développement back-end > C++ > Pourquoi devrais-je éviter les méthodes Async Void en C# ?

Pourquoi devrais-je éviter les méthodes Async Void en C# ?

Mary-Kate Olsen
Libérer: 2024-12-31 06:07:08
original
626 Les gens l'ont consulté

Why Should I Avoid Async Void Methods in C#?

Les pièges du vide asynchrone : une explication détaillée

Les méthodes de vide asynchrone se sont imposées comme une mauvaise pratique en matière de codage. Cet article explique plus en détail pourquoi c'est exactement le cas, en faisant référence à l'article bien connu « Éviter le vide asynchrone ».

Raisons pour éviter le vide asynchrone

  • Différences de gestion des erreurs :
    Contrairement aux méthodes de synchronisation, les méthodes async void gèrent les exceptions différemment. Les exceptions qui se produisent dans une méthode void asynchrone peuvent ne pas se propager vers le haut et peuvent être difficiles à détecter.
  • Défis de composition :
    Les méthodes void asynchrones entravent l'organisation et la réutilisation du code. Étant donné que ces méthodes ne renvoient pas de tâche, il devient difficile de les composer dans un flux de travail asynchrone plus vaste.
  • Luttes de testabilité :
    Tester les méthodes void asynchrones est une tâche en soi. Cela nécessite une planification méticuleuse pour garantir une couverture appropriée du code et de ses exceptions potentielles.

Considérations supplémentaires

Le vide asynchrone est considéré comme une anomalie dans le domaine de l'async. /attendre les langues. La plupart des langages, notamment F#, Python, JavaScript et TypeScript, ne le prennent pas en charge. Son inclusion dans C#/VB visait principalement à prendre en charge les gestionnaires d'événements asynchrones.

Une approche préférée

Dans votre exemple, si vous ajustez votre code pour utiliser des gestionnaires d'événements void asynchrones :

protected override async void OnLoad(EventArgs e)
{
    if (CustomTask == null)
        await PrimeCustomTask();
}

private async Task PrimeCustomTask()
{...}
Copier après la connexion

Ensuite, les inconvénients de async void seront limités au gestionnaire d'événements, rendant la gestion, la composition et les tests des exceptions plus gérable.

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