Sommaire

Appels asynchrones

1. Nature des appels asynchrones

Lorsqu’un appel est synchrone, le programme C# attend le retour de l’appel pour passer à l’instruction suivante. Si l’appel prend un certain temps, on se retrouve donc en attente de la réponse.

Au contraire, un appel asynchrone passe à l’instruction suivante du programme même si la réponse n’est toujours pas parvenue. Elle sera traitée indépendamment dès réception.

2. Utilisation des mots-clés async et await

Depuis la version 5 du langage, les appels asynchrones se traitent facilement en C#. Ces aspects sont particulièrement développés dans les chapitres Multithreading et traitement asynchrone et Gestion du multithreading du présent ouvrage.

En C#, une méthode asynchrone se définit avec le mot-clé async ; elle est appelée avec le mot-clé await.

Un certain nombre d’objets intègrent nativement ce dispositif. C’est notamment le cas des classes HttpClient, StreamWriter, StreamReader, XmlReader ou encore des classes d’encodage/décodage d’images BitmapEncoder et BitmapDecoder.

On accède de nouveau au site des Éditions ENI, mais cette fois-ci de manière asynchrone :

public async Task<string> Réponse()  
{  
    HttpClient client = new HttpClient();  
    string réponse = await 
client.GetStringAsync("https://www.editions-eni.fr/");   ...