Utilisation des threads et du threadingUsing threads and threading

Avec .NET, vous pouvez écrire des applications qui effectuent plusieurs opérations en même temps.With .NET, you can write applications that perform multiple operations at the same time. Les opérations présentant le risque d’accaparer les ressources d’autres opérations peuvent s’exécuter sur des threads distincts : ce processus est appelé multithreading ou threading libre.Operations with the potential of holding up other operations can execute on separate threads, a process known as multithreading or free threading.

Les applications qui utilisent le multithreading sont plus réactives aux entrées utilisateur, car l’interface utilisateur reste active pendant que les tâches sollicitant beaucoup le processeur s’exécutent sur des threads distincts.Applications that use multithreading are more responsive to user input because the user interface stays active as processor-intensive tasks execute on separate threads. Le multithreading est également utile quand vous créez des applications scalables, car vous pouvez ajouter des threads au fil de l’augmentation de la charge de travail.Multithreading is also useful when you create scalable applications, because you can add threads as the workload increases.

Notes

Si vous avez besoin de plus de contrôle sur le comportement des threads de l’application, vous pouvez gérer vous-même les threads.If you need more control over the behavior of the application's threads, you can manage the threads yourself. Toutefois, à compter de .NET Framework 4, la programmation multithread est considérablement simplifiée avec les classes System.Threading.Tasks.Parallel et System.Threading.Tasks.Task, Parallel LINQ (PLINQ), de nouvelles classes de collections simultanées dans l’espace de noms System.Collections.Concurrent, et un nouveau modèle de programmation basé sur le concept de tâches plutôt que de threads.However, starting with the .NET Framework 4, multithreaded programming is greatly simplified with the System.Threading.Tasks.Parallel and System.Threading.Tasks.Task classes, Parallel LINQ (PLINQ), new concurrent collection classes in the System.Collections.Concurrent namespace, and a new programming model that is based on the concept of tasks rather than threads. Pour plus d’informations, consultez Programmation parallèle et Bibliothèque parallèle de tâches (TPL).For more information, see Parallel Programming and Task Parallel Library (TPL).

Procédure : créer et démarrer un nouveau threadHow to: Create and start a new thread

Pour créer un thread, vous devez créer une instance de la classe System.Threading.Thread et fournir au constructeur le nom de la méthode que vous souhaitez exécuter sur un nouveau thread.You create a new thread by creating a new instance of the System.Threading.Thread class and providing the name of the method that you want to execute on a new thread to the constructor. Pour démarrer un thread créé, appelez la méthode Thread.Start.To start a created thread, call the Thread.Start method. Pour plus d’informations et pour obtenir des exemples, consultez l’article Création de threads et passage de données au démarrage et la référence de l’API Thread.For more information and examples, see the Creating threads and passing data at start time article and the Thread API reference.

Procédure : arrêter un threadHow to: Stop a thread

Pour mettre fin à l’exécution d’un thread, utilisez la méthode Thread.Abort.To terminate the execution of a thread, use the Thread.Abort method. Cette méthode lève une ThreadAbortException sur le thread sur lequel elle est appelée.That method raises a ThreadAbortException on the thread on which it's invoked. Pour plus d’informations, consultez Destruction de threads.For more information, see Destroying threads.

À compter de .NET Framework 4, vous pouvez utiliser System.Threading.CancellationToken pour annuler un thread de manière coopérative.Beginning with the .NET Framework 4, you can use the System.Threading.CancellationToken to cancel a thread cooperatively. Pour plus d’informations, consultez Annulation dans les threads managés.For more information, see Cancellation in managed threads.

Utilisez la méthode Thread.Join pour faire en sorte que le thread appelant attende l’arrêt du thread sur lequel la méthode est appelée.Use the Thread.Join method to make the calling thread wait for the termination of the thread on which the method is invoked.

Procédure : suspendre ou interrompre un threadHow to: Pause or interrupt a thread

Vous utilisez la méthode Thread.Sleep pour suspendre le thread actif pendant un certain laps de temps.You use the Thread.Sleep method to pause the current thread for a specified amount of time. Vous pouvez interrompre un thread bloqué en appelant la méthode Thread.Interrupt.You can interrupt a blocked thread by calling the Thread.Interrupt method. Pour plus d’informations, consultez Suspension et interruption de threads.For more information, see Pausing and interrupting threads.

Propriétés du threadThread properties

Le tableau suivant présente certaines des propriétés de Thread :The following table presents some of the Thread properties:

PropertyProperty DescriptionDescription
IsAlive Retourne true si un thread a été démarré et ne s’est pas encore arrêté normalement ou n’a pas été abandonné.Returns true if a thread has been started and has not yet terminated normally or aborted.
IsBackground Obtient ou définit une valeur booléenne qui indique si un thread est un thread d’arrière-plan.Gets or sets a Boolean that indicates if a thread is a background thread. Les threads d’arrière-plan ressemblent aux threads de premier plan, mais un thread d’arrière-plan n’empêche pas un processus de s’arrêter.Background threads are like foreground threads, but a background thread doesn't prevent a process from stopping. Une fois que tous les threads de premier plan appartenant à un processus sont arrêtés, le common language runtime met fin au processus en appelant la méthode Abort sur les threads d’arrière-plan encore actifs.Once all foreground threads that belong to a process have stopped, the common language runtime ends the process by calling the Abort method on background threads that are still alive. Pour plus d’informations, consultez Threads de premier plan et d’arrière-plan.For more information, see Foreground and Background Threads.
Name Obtient ou définit le nom d’un thread.Gets or sets the name of a thread. Généralement utilisé pour découvrir des threads individuels lors du débogage.Most frequently used to discover individual threads when you debug.
Priority Obtient ou définit une valeur ThreadPriority utilisée par le système d’exploitation pour classer par priorité la planification des threads.Gets or sets a ThreadPriority value that is used by the operating system to prioritize thread scheduling. Pour plus d’informations, consultez Planification des threads et la référence de ThreadPriority.For more information, see Scheduling threads and the ThreadPriority reference.
ThreadState Obtient une valeur ThreadState contenant les états actuels d’un thread.Gets a ThreadState value containing the current states of a thread.

Voir aussiSee also