AppDomain.IsFinalizingForUnload Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Indica se esse domínio de aplicativo está descarregando e os objetos que ele contém estão sendo finalizados pelo Common Language Runtime.
public:
bool IsFinalizingForUnload();
public bool IsFinalizingForUnload ();
member this.IsFinalizingForUnload : unit -> bool
Public Function IsFinalizingForUnload () As Boolean
Retornos
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.
Observação
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.
Observação
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.