Partager via


Utilisation des threads et du threading

Avec .NET, vous pouvez écrire des applications qui effectuent plusieurs opérations en même temps. Les opérations susceptibles de retarder d'autres opérations peuvent s'exécuter sur des threads distincts, un processus appelé multithreading ou threading libre.

Les applications qui utilisent le multithreading sont plus réactives à l’entrée utilisateur, car l’interface utilisateur reste active en tant que tâches nécessitant beaucoup de processeurs s’exécutent sur des threads distincts. Le multithreading est également utile lorsque vous créez des applications évolutives, car vous pouvez ajouter des threads à mesure que la charge de travail augmente.

Remarque

Si vous avez besoin d’un contrôle supplémentaire sur le comportement des threads de l’application, vous pouvez gérer vous-même les threads. Toutefois, la programmation multithread est considérablement simplifiée grâce aux classes System.Threading.Tasks.Parallel, System.Threading.Tasks.Task, Parallel LINQ (PLINQ), aux classes de collection simultanées dans l’espace de noms System.Collections.Concurrent et à un modèle de programmation basé sur le concept de tâches plutôt que de threads. Pour plus d’informations, consultez Programmation parallèle et bibliothèque parallèle de tâches (TPL) .

Guide pratique pour créer et démarrer un nouveau thread

Vous créez un thread en créant une instance de la System.Threading.Thread classe. Vous fournissez le nom de la méthode que vous souhaitez exécuter sur le nouveau thread sur le constructeur. Pour démarrer un thread créé, appelez la Thread.Start méthode. Pour plus d’informations et d’exemples, consultez l’article Création de threads et transmission de données à l’heure de début et la référence de l’API Thread .

Guide pratique pour arrêter un thread

Pour mettre fin à l’exécution d’un thread, utilisez le System.Threading.CancellationToken. Il offre un moyen unifié d’arrêter les threads de manière coopérative. Pour plus d’informations, consultez Annulation dans les threads managés.

Parfois, il n’est pas possible d’arrêter un thread de manière coopérative, car il exécute du code tiers non conçu pour l’annulation coopérative. Dans ce cas, vous souhaiterez peut-être mettre fin à son exécution de force. Pour mettre fin à l’exécution d’un thread de force, dans .NET Framework, vous pouvez utiliser la Thread.Abort méthode. Cette méthode lève un ThreadAbortException sur le thread sur lequel elle est appelée. Pour plus d’informations, consultez Destruction de threads. La Thread.Abort méthode n’est pas prise en charge dans .NET Core. Si vous devez mettre fin à l’exécution du code tiers de force dans .NET Core, exécutez-le dans le processus distinct et utilisez la Process.Kill méthode.

Le System.Threading.CancellationToken fichier n’est pas disponible avant .NET Framework 4. Pour arrêter un thread dans les anciennes versions du .NET Framework, utilisez les techniques de synchronisation de threads pour implémenter manuellement l’annulation coopérative. Par exemple, vous pouvez créer le champ shouldStop booléen volatile et l’utiliser pour demander le code exécuté par le thread à arrêter. Pour plus d’informations, consultez volatile dans référence C# et System.Threading.Volatile.

Utilisez la méthode Thread.Join pour que le thread appelant attende la fin du thread en cours d’arrêt.

Guide pratique pour suspendre ou interrompre un thread

Vous utilisez la Thread.Sleep méthode pour suspendre le thread actuel pendant une durée spécifiée. Vous pouvez interrompre un thread bloqué en appelant la Thread.Interrupt méthode. Pour plus d’informations, consultez Suspension et interruption des threads.

Propriétés du thread

Le tableau suivant présente certaines des Thread propriétés :

Propriété Descriptif
IsAlive Retourne true si un thread a été démarré et n’a pas encore été arrêté normalement ou abandonné.
IsBackground Obtient ou définit une valeur booléenne qui indique si un thread est un thread d’arrière-plan. Les threads d’arrière-plan sont similaires aux threads de premier plan. Toutefois, un thread d’arrière-plan n’empêche pas l’arrêt d’un processus. Une fois tous les threads de premier plan qui appartiennent à un processus arrêtés, le Common Language Runtime met fin au processus en appelant la Abort méthode sur les threads d’arrière-plan qui sont toujours actifs. Pour plus d’informations, consultez Threads de premier plan et d’arrière-plan.
Name Obtient ou définit le nom d’un thread. Le plus fréquemment utilisé pour découvrir des threads individuels lorsque vous déboguez.
Priority Obtient ou définit une ThreadPriority valeur utilisée par le système d’exploitation pour hiérarchiser la planification des threads. Pour plus d'informations, consultez Planification des threads et la référence ThreadPriority.
ThreadState Obtient une ThreadState valeur contenant les états actuels d’un thread.

Voir aussi