Sobes.tech
Middle

Comment fonctionne une méthode asynchrone en C#?

sobes.tech IA

Réponse de l'IA

La méthode asynchrone en C# permet d'effectuer des opérations pouvant prendre du temps (par exemple, entrée/sortie, requêtes réseau) sans bloquer le thread principal d'exécution.

Lorsqu'une méthode asynchrone marquée du mot-clé async est appelée, le contrôle est transféré au code appelant jusqu'à ce que l'opération asynchrone se termine. L'opération s'exécute en arrière-plan (par exemple, en utilisant un pool de threads ou des mécanismes d'entrée/sortie du système).

Le mot-clé await à l'intérieur de la méthode asynchrone indique où l'opération asynchrone peut être suspendue. Lorsque l'exécution atteint await, le contrôle est rendu au code appelant, et la continuation de la méthode est planifiée pour s'exécuter lorsque l'opération attendue se termine.

Le résultat de l'opération asynchrone (ou une exception) est ensuite renvoyé à la continuation de la méthode asynchrone, où il est traité. L'état de la méthode asynchrone est géré automatiquement par le compilateur C#, qui le transforme en une machine à états finie.

public async Task<string> GetDataAsync(string url)
{
    // Simulation d'une opération d'entrée/sortie prolongée
    using (var httpClient = new HttpClient())
    {
        string result = await httpClient.GetStringAsync(url); // await : l'exécution de la méthode peut être suspendue
        return result;
    }
}

// Exemple d'appel à une méthode asynchrone
public async Task ProcessDataAsync(string url)
{
    Console.WriteLine("Début du chargement des données...");
    string data = await GetDataAsync(url); // Attente de la fin de l'opération asynchrone
    Console.WriteLine("Données chargées : " + data.Length + " caractères.");
}