Ler em inglês

Partilhar via


AppDomain.IsFinalizingForUnload Método

Definição

Indica se esse domínio de aplicativo está descarregando e os objetos que ele contém estão sendo finalizados pelo Common Language Runtime.

C#
public bool IsFinalizingForUnload ();

Retornos

Boolean

true se esse domínio de aplicativo estiver descarregando e o Common Language Runtime tiver começado a chamar finalizadores; caso contrário, false.

Comentários

O método de finalização de um objeto oferece a oportunidade de executar todas as operações de limpeza necessárias antes que o objeto seja coletado. Após a finalização, o objeto é acessível, mas em um estado inválido e, portanto, inutilizável. Eventualmente, a coleta de lixo é concluída e recupera o objeto.

O método de finalização de um objeto é chamado em uma das seguintes situações: durante a coleta de lixo, quando o common language runtime está sendo desligado ou quando o domínio do aplicativo que contém o objeto é descarregado. O IsFinalizingForUnload método retorna true somente no último caso; ele não retorna true se a finalização resulta da coleta de lixo de rotina ou do desligamento do CLR.

Nota

Para determinar se a finalização é devido ao desligamento do CLR, use a Environment.HasShutdownStarted propriedade. Ele retornará true se a finalização for devido ao descarregamento de um domínio do aplicativo ou ao desligamento do CLR.

Durante a execução em seu método de finalização durante o descarregamento de domínio, convém acessar outro objeto referenciado por um campo estático e que tenha um método de finalização. No entanto, você não pode fazer isso de forma confiável porque o objeto acessado pode já ter sido finalizado.

Nota

Uma exceção a essa regra é a Console classe, que contém campos estáticos que fazem referência a objetos de fluxo, mas é implementada especialmente para que você sempre possa gravar no console do sistema, mesmo durante o descarregamento de domínio ou desligamento do sistema.

Use esse método no método de finalização de um objeto para determinar se o domínio do aplicativo que contém o objeto está descarregando. Se esse for o caso, você não poderá acessar de forma confiável qualquer objeto que tenha um método de finalização e seja referenciado por um campo estático.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Confira também