Dispor

Definição - o que significa Dispose?

No contexto do C #, dispose é um método de objeto chamado para executar o código necessário para a limpeza e liberação da memória e redefinir recursos não gerenciados, como identificadores de arquivo e conexões de banco de dados. Dispose melhora o desempenho e otimiza a memória ao liberar objetos não gerenciáveis ​​e recursos escassos, como identificadores de interface de dispositivo gráfico (GDI) usados ​​em aplicativos com espaço restrito do Windows.

O método Dispose, fornecido pela interface IDisposable, implementa chamadas Dispose. O padrão Dispose é projetado para limpeza oportuna e previsível, prevenção de vazamentos de memória temporários e descarte de recursos.

Definirtec explica Dispose

A estrutura .NET facilita a coleta de lixo (GC), gerencia a memória e os recursos do objeto e recupera referências de memória do objeto inválidas invocando Finalize - um método não determinístico. O método Dispose controla o tempo de vida das instâncias de memória do objeto e fornece controle de limpeza de memória explícita, em comparação com a limpeza de memória implícita de Finalize. Dispose pode ser invocado mesmo quando existem outras instâncias de objeto de memória, enquanto Finalize só pode ser invocado depois que o último objeto de memória é destruído.

As regras do método de descarte são as seguintes:

  • Usado para recursos não gerenciados que requerem liberação imediata após o uso.
  • Se Dispose não for chamado, o método Finalize deve ser implementado.
  • Depois de chamar o método Dispose, o método GC.SuppressFinalize deve ser chamado para evitar o método Finalize e evitar GC desnecessário.
  • As exceções devem ser tratadas com cuidado se o método Dispose for chamado mais de uma vez. Se os recursos forem descartados, qualquer método de instância pode lançar a ObjectDisposedException.
  • Um objeto com um método anteriormente denominado Dispose não pode ser reutilizado.
  • Dispose é recomendado apenas para o gerenciamento de objetos de recursos nativos e objetos Component Object Model (COM) expostos ao .NET Framework.
  • Dispose não pode ser invocado simultaneamente a partir de vários threads, devido a resultados imprevisíveis.
  • Os tipos de valor não devem ser criados como tipos descartáveis ​​ou com membros de recursos não gerenciados.
  • Ao usar recursos não gerenciados, é considerada prática recomendada aplicar a instrução Using do código-fonte, que invoca automaticamente o método Dispose do objeto após completar o código do objeto.

Esta definição foi escrita no contexto de C #