Threads de premier plan et d'arrière-plan

Mise à jour : novembre 2007

Un thread managé peut se trouver soit à l'arrière-plan, soit au premier plan. Les threads d'arrière-plan sont identiques aux threads de premier plan avec une exception : un thread d'arrière-plan ne gardera pas l'environnement d'exécution managé actif. Une fois que tous les threads de premier plan ont été arrêtés dans un processus managé (où le fichier .exe est un assembly managé), le système arrête tous les threads d'arrière-plan et s'arrête.

Remarque :

Lorsque le runtime arrête un thread d'arrière-plan parce que le processus s'arrête, aucune exception n'est levée dans le thread. Toutefois, lorsque les threads sont arrêtés parce que la méthode AppDomain.Unload décharge le domaine d'application, une ThreadAbortException est levée dans les threads de premier plan et d'arrière-plan.

Utilisez la propriété Thread.IsBackground pour déterminer si un thread est un thread d'arrière-plan ou de premier plan, ou pour modifier son état. Un thread peut être à tout moment changé en thread d'arrière-plan si sa propriété IsBackground a la valeur true.

Remarque importante :

L'état de premier plan ou d'arrière-plan d'un thread n'affecte pas le résultat d'une exception non gérée dans le thread. Dans le .NET Framework version 2.0, une exception non gérée dans des threads de premier plan ou d'arrière-plan entraîne la fin de l'application. Consultez Exceptions dans les threads managés.

Les threads qui appartiennent au pool de threads managé (c'est-à-dire les threads dont la propriété IsThreadPoolThread est true) sont des threads d'arrière-plan. Tous les threads qui entrent dans l'environnement d'exécution managé à partir du code non managé sont marqués comme threads d'arrière-plan. Tous les threads générés en créant et en démarrant un nouvel objet Thread sont par défaut des threads de premier plan.

Si vous utilisez un thread pour contrôler une activité, telle qu'une connexion de socket, affectez true à sa propriété IsBackground afin que le thread n'empêche pas votre processus de s'arrêter.

Voir aussi

Référence

Thread.IsBackground

Thread

ThreadAbortException