Substituindo o método Finalize

Um método de Finalize atua como proteção para limpar recursos caso o método de Dispose não for chamado. Você só deve implementar um método de Finalize para limpar recursos não gerenciados. Você não deve implementar um método de Finalize para objetos gerenciados, porque o coletor de lixo limpa automaticamente recursos gerenciados. Por padrão, Método de Object.Finalize não fará nada. Se você desejar que o coletor de lixo para executar operações de limpeza no seu objeto antes que recupera memória de objeto, você deve substituir esse método na sua classe.

Dica

Você não pode sobrescrever o método de Finalize nas linguagens de programação de C# ou C++.Em C#, use sintaxe de destrutor para implementar o método Finalize .No .NET Framework versão 2,0, C++ fornece sua própria sintaxe para implementar o método Finalize , como descrito em Como: criar uma instância de Classes e estruturas.Em versões anteriores, a sintaxe usada C++ do destrutor para o método de Finalize , como C# faz.

O escopo de método Object.Finalize é protegido. Você deve manter este escopo limitado quando você substituir o método na sua classe. Mantendo um método de Finalize protegido, você impede os usuários do seu aplicativo chamem o método de Finalize de um objeto diretamente.

O método de Finalize de um objeto deve liberar quaisquer recursos que são mantidos pelo objeto. Também deve chamar o método de Finalize para a classe base do objeto. O método de Finalize de um objeto não deve chamar um método em quaisquer objetos diferentes de aquele da classe base. Isso ocorre porque os outros objetos que estão sendo chamados podem ser coletados ao mesmo tempo que o objeto de chamada, como no caso de um desligamento do Common Language Runtime.

Se você permite que qualquer exceção escape o método de Finalize , o sistema pressupõe que o método retornado, e continua a chamar os métodos de Finalize de outros objetos.

Consulte também

Referência

Finalize

Conceitos

Implementando um método Dispose

Sintaxe de destruidores em C# e C++

Outros recursos

Manipulando e lançando exceções

Fundamentos da manipulação de exceções