Maison >développement back-end >C++ >Comment appeler correctement des méthodes asynchrones à partir de la méthode principale en C# ?

Comment appeler correctement des méthodes asynchrones à partir de la méthode principale en C# ?

DDD
DDDoriginal
2024-12-29 15:41:13294parcourir

How Do I Properly Invoke Async Methods from the Main Method in C#?

Invoquer des méthodes asynchrones dans Main : un guide complet

Dans le domaine de la programmation asynchrone, il n'est pas rare de rencontrer des situations où nous devons appelez une méthode asynchrone directement depuis la méthode Main. Comprendre comment cela peut être réalisé est crucial pour tirer parti des avantages de la programmation asynchrone.

Invocation de méthode asynchrone dans Main

Considérez l'extrait de code suivant :


cours public test
{

public async Task Go()
{
    await PrintAnswerToLife();
    Console.WriteLine("done");
}

public async Task PrintAnswerToLife()
{
    int answer = await GetAnswerToLife();
    Console.WriteLine(answer);
}

public async Task<int> GetAnswerToLife()
{
    await Task.Delay(5000);
    int answer = 21 * 2;
    return answer;
}

}

Approches multiples

Il existe plusieurs approches pour invoquer async méthodes de la méthode Main :

1. Méthode principale asynchrone (C# 7.1 et versions ultérieures)

Pour C# 7.1 et versions plus récentes, la méthode Main peut être marquée comme asynchrone. Cela permet l'utilisation directe de méthodes asynchrones au sein de la méthode Main, comme le montre l'exemple suivant :

<br>static async Task Main(string[] args)<br>{</p> <pre class="brush:php;toolbar:false">test t = new test();
await t.Go();
Console.WriteLine("finished");
Console.ReadKey();

}

2. Appelez la méthode "Wait"

Pour les versions antérieures de C#, la méthode Wait peut être utilisée pour bloquer le thread jusqu'à la fin de la méthode asynchrone. Cette approche est illustrée ci-dessous :

<br>static void Main(string[] args)<br>{</p>
<pre class="brush:php;toolbar:false">test t = new test();
t.Go().Wait();
Console.WriteLine("finished");
Console.ReadKey();

}

3. OnCompleted Callback (ancienne approche)

Dans certains cas, vous devrez peut-être utiliser un rappel OnCompleted comme indiqué dans l'extrait de code initial. Cette approche, cependant, peut conduire à des blocages et doit être évitée si possible.

Approche optimale

Pour C# 7.1 et versions ultérieures, l'utilisation de la méthode async Main est la méthode préférée. car elle simplifie le code et élimine le besoin d’invocation basée sur le rappel. Pour les versions antérieures de C#, la méthode Wait peut être utilisée, mais il est important de noter les implications potentielles sur les performances associées au blocage du thread.

Conclusion

Invocation de méthodes asynchrones de la méthode Main peut être réalisé grâce à diverses techniques. En comprenant les différentes approches et leurs implications, vous pouvez choisir la solution optimale en fonction de vos besoins spécifiques et de la version de C# que vous utilisez.

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