Maison >développement back-end >C++ >Fire-and-Forget en C# : Async/Await vs. l'ancien délégué async – Quelle approche est la meilleure ?

Fire-and-Forget en C# : Async/Await vs. l'ancien délégué async – Quelle approche est la meilleure ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-08 07:37:40787parcourir

Fire-and-Forget in C#: Async/Await vs. the Old Async Delegate – Which Approach Is Best?

« Déclencher et oublier » en C# : Async/Await vs. anciens délégués asynchrones – quelle approche est la meilleure ?

Dans le but de simplifier les appels « fire and Forget » en C#, les développeurs peuvent rencontrer des défis lors de la transition vers la nouvelle syntaxe asynchrone. Cet article explore les différences entre les anciennes méthodes et les nouvelles méthodes.

Dans l'ancienne approche (démontrée par le délégué "async" dans l'exemple de code), le thread sous-jacent était terminé une fois la méthode EndInvoke() appelée. La méthode BeginInvoke() garantit que le thread est démarré, permettant aux opérations « démarrer et oublier » d'appeler la méthode DoIt() de manière asynchrone. Bien que cette approche fonctionne, elle nécessite la fermeture manuelle du handle d’attente asynchrone.

La nouvelle syntaxe asynchrone (illustré par la méthode DoIt2()) élimine le besoin de EndInvoke() et de gestion de la fermeture. Cependant, il introduit l'obligation d'attendre Task.Yield(), ce qui nécessite que les méthodes asynchrones existantes soient remplacées pour ajouter cet espace réservé.

Pour résoudre le problème de l'appel asynchrone de la méthode synchrone A() sans créer de complexité inutile, les développeurs peuvent éviter d'utiliser async void et appeler A() directement en utilisant Task.Run(A). Cette approche émule l'ancien délégué asynchrone sans la complexité de async/await.

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:
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