Maison >développement back-end >C++ >Comment puis-je utiliser efficacement Async/Await dans les applications console C# ?

Comment puis-je utiliser efficacement Async/Await dans les applications console C# ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-05 15:15:39961parcourir

How Can I Effectively Use Async/Await in C# Console Applications?

Programmation asynchrone dans les applications console en C#

Dans le domaine de la programmation C#, le modèle de programmation asynchrone utilisant le mot-clé 'async' offre des exécution en évitant le blocage des threads en attendant la fin des opérations de longue durée. Cependant, les applications console posent un défi lorsqu'il s'agit d'intégrer ce modèle.

Le dilemme de la fonction principale asynchrone

En programmation synchrone, il est essentiel de propager l''async ' dans toute la pile d'appels, du point d'entrée aux fonctions asynchrones. Cependant, dans les applications console, le point d'entrée (fonction principale) ne peut pas être marqué comme asynchrone en raison d'une erreur de compilation.

Surmonter la limitation

Il existe deux approches principales pour résoudre cette limitation :

1. Bloquer l'exécution :

Cela implique de bloquer le thread principal jusqu'à ce que l'opération asynchrone soit terminée. Une façon d'y parvenir consiste à exploiter la méthode « Wait » sur la tâche renvoyée :

static void Main()
{
  MainAsync().Wait();
}

Cependant, cette approche peut entraîner l'encapsulation d'exceptions dans une AggregateException. Pour éviter cela, pensez à utiliser la méthode GetAwaiter().GetResult() :

static void Main()
{
  MainAsync().GetAwaiter().GetResult();
}

2. Utilisez votre propre contexte :

Vous pouvez également créer un contexte asynchrone personnalisé pour gérer l'exécution asynchrone. Cela vous permet de séparer le point d'entrée du code asynchrone :

static void Main()
{
  AsyncContext.Run(() => MainAsync());
}

Cette approche fournit un mécanisme robuste pour gérer les opérations asynchrones dans les applications console.

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