Sommaire

Les tâches et la classe Task

1. Introduction

On comprend tout l’intérêt du pool de threads : schématiquement, on recycle nos threads relatifs à une application donnée. Certes, on optimise nos ressources, mais on n’a pas réellement une gestion orientée fonctionnalité. C’est sans doute là l’origine de « l’invention en C# » du concept de tâche. On associe un thread à une tâche donnée qui peut avoir un statut, que l’on peut envisager comme terminé (completed). Si elle est terminée, la tâche est alors à même de faire connaître son résultat.

On peut alors se poser la question de « qui » gère ces tâches ? Ce sera en l’occurrence un « task scheduler » qui gère lesdites tâches en exploitant en sous-main un pool de threads.

L’un des grands avantages du recours à une tâche est de déléguer certaines « tâches » à effectuer par l’application à des threads du pool de threads. Ainsi, l’application elle-même, un front end par exemple, est à même de rester disponible à une action de l’utilisateur.

2. La classe Task

La classe Task est disponible dans l’espace de noms System.Threading.Tasks. Ci-dessous, le détail simplifié de cette classe :

[DebuggerDisplay("Id ...