Maison >développement back-end >C++ >Comment appeler une méthode asynchrone à partir d'une méthode principale synchrone en C# ?

Comment appeler une méthode asynchrone à partir d'une méthode principale synchrone en C# ?

DDD
DDDoriginal
2024-12-31 02:29:08979parcourir

How Do I Call an Async Method from a Synchronous Main Method in C#?

Appel de méthodes asynchrones depuis Main : un guide complet

Introduction

La question se pose quand un développeur doit appeler une méthode asynchrone à partir d'un contexte synchrone traditionnel tel que la méthode Main. Cette situation apparaît souvent lors de l'exploration du domaine de la programmation asynchrone en C#.

Problème

Étant donné la méthode asynchrone suivante :

public class test
{
    public async Task Go()
    {
        // ... various async operations
    }
}

Le un dilemme survient lorsque l'on tente d'appeler Go depuis la méthode Main, l'entrée synchrone du programme point.

Solution

Dans C# 7.1 et versions ultérieures, appeler une méthode asynchrone depuis Main est simple :

static async Task Main(string[] args)
{
    test t = new test();
    await t.Go();
    Console.WriteLine("finished");
    Console.ReadKey();
}

Ce code garantit que Les opérations asynchrones de Go se terminent avant la fin du programme.

Pour les versions C# antérieures à 7.1, une approche différente est nécessaire :

static void Main(string[] args)
{
    test t = new test();
    t.Go().Wait();
    Console.WriteLine("finished");
    Console.ReadKey();
}

L'appel de Wait() bloque le thread actuel jusqu'à la fin des opérations asynchrones de Go.

Avantages des méthodes asynchrones

Élimination des rappels, qui peut rendre le code complexe et difficile à maintenir, constitue un avantage clé de la programmation asynchrone utilisant le mot-clé async. Il permet un flux d'exécution propre et séquentiel tout en permettant à d'autres opérations de se dérouler simultanément.

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