Compartilhar via


Threads em primeiro plano e em 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 gerenciada em execução. Depois que todos os threads de primeiro plano tiverem sido interrompidos em um processo gerenciado (em que o arquivo .exe é um assembly gerenciado), o sistema interrompe todos os threads em segundo plano e é desligado.

Observação

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

Use a propriedade Thread.IsBackground para determinar se uma thread é de segundo plano ou 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 sem tratamento 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 gerenciados (ou seja, threads cuja IsThreadPoolThread propriedade é true) são threads em segundo plano. Todos os threads que entram no ambiente de execução gerenciada do código não gerenciado são marcados como threads em segundo plano. Todos os threads gerados criando e iniciando 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 propriedade IsBackground para true, de modo que o thread não impeça o encerramento do processo.

Consulte também