Sobes.tech
Junior

Comment utiliser le mot-clé await en C#?

sobes.tech IA

Réponse de l'IA

Le mot-clé await est utilisé en C# pour attendre de manière non bloquante la fin d'une opération asynchrone.

L'utilisation de await est possible uniquement à l'intérieur de méthodes asynchrones marquées du modificateur async.

Lorsque l'exécution atteint l'instruction await, le flux de contrôle revient à l'appelant, et la méthode est "suspendue" jusqu'à ce que la tâche attendue se termine. Après la fin de la tâche, l'exécution de la méthode reprend à partir de l'endroit où elle s'était arrêtée.

Cela permet de libérer le thread appelant (par exemple, le thread de l'interface utilisateur ou le thread du serveur web) pour effectuer d'autres tâches, améliorant la réactivité et la scalabilité de l'application.

public async Task<string> GetDataAsync()
{
    // Simulation d'une opération asynchrone longue
    await Task.Delay(2000);
    return "Données reçues";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Début du traitement...");
    string result = await GetDataAsync(); // Attend la fin de GetDataAsync sans bloquer
    Console.WriteLine($"Résultat : {result}");
    Console.WriteLine("Traitement terminé.");
}

Le mot-clé await peut s'appliquer à :

  1. Tâches (Task, Task<T>, ValueTask, ValueTask<T>) : scénario le plus courant.
  2. types awaitables : objets ayant une méthode GetAwaiter(), qui retourne un type avec les méthodes IsCompleted, GetResult() et OnCompleted() (pour supporter la continuation).

L'utilisation de await rend le code asynchrone plus lisible et semblable au code synchrone, éliminant le besoin d'écrire manuellement du code de continuation ou d'utiliser des callbacks.