Sommaire

async et await, mots-clés magiques

1. Introduction

On a vu comment on peut faire réaliser certaines actions par un thread dédié, en « économisant les threads » (pool de threads) ou en associant à cette action la notion de tâche. Mais ce n’est pas un comportement réellement asynchrone qui est envisagé dans les parties précédentes.

On entend par appel asynchrone, la séquence suivante :

  • on fait un appel vers une ressource, éventuellement externe,

  • le contexte d’appel est capturé

  • l’algorithme se poursuit sans que l’on attende la réponse (l’appel serait synchrone, on attendrait la réponse),

  • la réponse arrive : elle est alors traitée et on retrouve le contexte d’appel.

Depuis la version 5 du langage C#, Microsoft a introduit deux mots-clés, async et await, dans le langage.

a. Mot-clé async

Grâce à ce mot-clé, le compilateur reçoit l’information d’un appel asynchrone. Fort de cette information, il compile une sorte de machine à états dont celui qui correspond à l’attente de la réponse asynchrone.

Le type de retour d’une méthode async doit être void, Task ou Task<T>.

b. Mot-clé await

Ce mot-clé permet justement d’indiquer quel est le traitement à effectuer dès lors que le traitement asynchrone est terminé, c’est-à-dire qu’une ...