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.
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/"); ...
Abonnement
tous les livres et vidéos ENI en illimité sans engagement
du livre imprimé ou du livre numérique