IDisposable, Finalizers e a definição de um recurso não gerenciado

Estou tentando ter certeza de que minha compreensão deIDisposable está correto e há algo que eu ainda não tenho certeza.

IDisposable parece servir dois propósitos.

Para fornecer uma convenção para "desligar" um objeto gerenciado sob demanda.Para fornecer uma convenção para liberar "recursos não gerenciados" mantidos por um objeto gerenciado.

Minha confusão vem de identificar quais cenários têm "recursos não gerenciados" em jogo.

Digamos que você esteja usando um computador da MicrosoftIDisposable-implementando a classe (gerenciada) (digamos, relacionado ao banco de dados ou ao soquete).

Como você sabe se está implementandoIDisposable por apenas1 ou1 e 2 acima?Você é responsável por garantir que os recursos não gerenciados que podem ou não manter internamente sejam liberados? Você deve adicionar um finalizador (seria esse o mecanismo correto?) À sua própria classe que chama instanceOfMsSuppliedClass.Dispose ()?

questionAnswers(8)

yourAnswerToTheQuestion