sexta-feira, 30 de agosto de 2013

Interface IDisposable

O .NET Framework disponibiliza uma interface , onde a classe implementará o método Dispose(), que nos permite eliminar recursos manualmente, lembrando que irá eliminar antes do Garbage Collector (Coletor de Lixo),  só lembrando o Garbage Collector é gerenciado pelo .NET Framework. Apenas lembrando que para usar a interface precisamos utilizar o bloco chamado using, pois o .Net Framework irá acionar o seu método Dispose(). É uma boa prática utilizar este recurso para liberação desses recursos compartilhados ou não gerenciados, que utilize um pool para economia do recurso. Abaixo está um exemplo de código:


    // Classe que implementa o contrato IDisposable.
    public class TesteIDisposable : IDisposable
    {
        private void Dispose(bool disposing)
        {
            lock (this)
            {
                if (disposing)
                {
                    // Limpando os recursos manualmente Exemplo:
                    // apiWindows = null;
                    // filestream = null;
                }
            }
            Console.WriteLine("Recurso(s) liberado(s)!");
        }

        // Método invocado automaticamente na saída do contexto em blocos using.
        public void Dispose()
        {
            GC.SuppressFinalize(this);
            Dispose(true);
        }

        // Método destrutor da classe.
        ~TesteIDisposable()
        {
            Dispose(false);
            Console.WriteLine("Estou sendo removido da Heap.");
        }
    }

    // Programa console que testa a classe com o IDisposable.
    public class Program
    {
        static void Main(string[] args)
        {
            using (TesteIDisposable sample = new TesteIDisposable())
            {
                Console.WriteLine(sample.ToString());
            }
        }
    }

Bons, estudos

0 comentários:

Postar um comentário