Se um tipo implementa um método Dispose e possui recursos não gerenciados, ele deve fornecer um método Finalize para o caso ...

Se um tipo implementa um método Dispose e possui recursos não gerenciados, ele deve fornecer um método Finalize para o caso de Dispose não ser chamado explicitamente. O runtime chama o método Finalize ou destrutor de um objeto antes de reclamar seus recursos gerenciados em um processo conhecido como coleta de lixo. O método Finalize deve liberar quaisquer recursos não gerenciados antes de eles se tornarem inacessíveis.