Threads de primeiro e segundo plano

Um thread gerenciado é um thread em segundo plano ou um thread em primeiro plano. Os threads em segundo plano são idênticos aos threads de primeiro plano, com uma exceção: um thread em segundo plano não mantém o ambiente de execução gerenciado em execução. Uma vez que todos os threads de primeiro plano tenham sido interrompidos em um processo gerenciado (onde o arquivo de .exe é um assembly gerenciado), o sistema interrompe todos os threads em segundo plano e desliga.

Nota

Quando o tempo de execução interrompe um thread em segundo plano porque o processo está sendo encerrado, nenhuma exceção é lançada no thread. No entanto, quando os threads são interrompidos porque o AppDomain.Unload método descarrega o domínio do aplicativo, um ThreadAbortException é lançado em ambos os threads em primeiro plano e em segundo plano.

Use a Thread.IsBackground propriedade para determinar se um thread é um plano de fundo ou um thread de primeiro plano, ou para alterar seu status. Um thread pode ser alterado para um thread em segundo plano a qualquer momento, definindo sua IsBackground propriedade como true.

Importante

O status de primeiro plano ou plano de fundo de um thread não afeta o resultado de uma exceção não tratada no thread. Uma exceção não tratada em threads em primeiro plano ou em segundo plano resulta no encerramento do aplicativo. Consulte Exceções em threads gerenciados.

Os threads que pertencem ao pool de threads gerenciado (ou seja, threads cuja IsThreadPoolThread propriedade é true) são threads em segundo plano. Todos os threads que entram no ambiente de execução gerenciado a partir de código não gerenciado são marcados como threads em segundo plano. Todos os threads gerados pela criação e início de um novo Thread objeto são, por padrão, threads de primeiro plano.

Se você usar um thread para monitorar uma atividade, como uma conexão de soquete, defina sua IsBackground propriedade como true para que o thread não impeça o encerramento do processo.

Consulte também