none
Dúvida com Dispose RRS feed

  • Pergunta

  • Tenho uma classe com os seguintes objetos e o método Dispose:

    string StringDeConexao = Dados.StringDeConexao;
    MySqlConnection conexao = null;
    MySqlCommand cmd = null;
    MySqlDataAdapter da = null;
    DataTable dt = null;
    
    private void Dispose()
    {
         conexao.Close();
         conexao.Dispose();
         if(cmd != null)
            cmd.Dispose();
         if(da != null)
            da.Dispose();
         if(dt != null)
            dt.Dispose();
    }

    Meu método Dispose está correto?

    É válido usá-lo?


    [IMG]http://i42.tinypic.com/33zbgn8.jpg[/IMG]

    terça-feira, 13 de maio de 2014 18:30

Respostas

  • Sim, trate também o conexao veja se ele não é nulo antes de fazer o Close() caso ele for nulo vai lhe gerar um erro em tempo de execução ! 

    Caso vc implemente a interface IDisposable vc pode fazer as chamadas dessa sua classe em um bloco using que após fechar a chave ele chama o método dispose automaticamente :

    class Classe : IDisposable
    {
    
    
     void Dispose()
    {
    
    }
    }
    
    //quando faz a chamada com bloco using
    using(Classe c = new Classe())
    {
    
    
    
    }//qndo chega nesta chave ele chama o método dispose
    //automaticamente !
    É apenas uma dica, mas é performatico usar com blocos using ! E atribua somente o conexao para verificar nulo que está correto seu método Dispose !

    • Marcado como Resposta Rodrigo1810 terça-feira, 13 de maio de 2014 19:50
    terça-feira, 13 de maio de 2014 19:08
  • Tem sim...você pode dar uma olhada no namespace System.Diagnostics e nesse link abaixo:

    http://www.dotnetspider.com/resources/4612-Find-Memory-usage-CPU-usage.aspx

    Não esquece de marcar como resposta ;)

    Abraços !


    Diego Murakami

    • Marcado como Resposta Rodrigo1810 terça-feira, 13 de maio de 2014 19:50
    terça-feira, 13 de maio de 2014 19:24

Todas as Respostas

  • Sim, trate também o conexao veja se ele não é nulo antes de fazer o Close() caso ele for nulo vai lhe gerar um erro em tempo de execução ! 

    Caso vc implemente a interface IDisposable vc pode fazer as chamadas dessa sua classe em um bloco using que após fechar a chave ele chama o método dispose automaticamente :

    class Classe : IDisposable
    {
    
    
     void Dispose()
    {
    
    }
    }
    
    //quando faz a chamada com bloco using
    using(Classe c = new Classe())
    {
    
    
    
    }//qndo chega nesta chave ele chama o método dispose
    //automaticamente !
    É apenas uma dica, mas é performatico usar com blocos using ! E atribua somente o conexao para verificar nulo que está correto seu método Dispose !

    • Marcado como Resposta Rodrigo1810 terça-feira, 13 de maio de 2014 19:50
    terça-feira, 13 de maio de 2014 19:08
  • Está sim, só coloca:

    if (conexão != null) {
    	conexao.Close();
        conexao.Dispose();
    }

    • Sugerido como Resposta Diego Murakami terça-feira, 13 de maio de 2014 19:13
    terça-feira, 13 de maio de 2014 19:12
  • Tem como fazer algum tipo de verificação de memória ou desempenho do computador, ou algo do tipo usando e não usando o Dispose()...

    só para eu ver a diferença de quando eu uso e de quando não uso o Dispose()....


    [IMG]http://i42.tinypic.com/33zbgn8.jpg[/IMG]

    terça-feira, 13 de maio de 2014 19:14
  • Tem sim...você pode dar uma olhada no namespace System.Diagnostics e nesse link abaixo:

    http://www.dotnetspider.com/resources/4612-Find-Memory-usage-CPU-usage.aspx

    Não esquece de marcar como resposta ;)

    Abraços !


    Diego Murakami

    • Marcado como Resposta Rodrigo1810 terça-feira, 13 de maio de 2014 19:50
    terça-feira, 13 de maio de 2014 19:24
  • Mas este System.Diagnostics mostra o uso da memória....

    Mas não dá pra ter uma noção concreta, não tem como eu ver o quanto de MB da memória esses meus objetos estão usando?


    [IMG]http://i42.tinypic.com/33zbgn8.jpg[/IMG]

    terça-feira, 13 de maio de 2014 19:53
  • Individualmente eu não encontrei nenhuma implementação Rodrigo.

    Vou continuar pesquisando e qualquer coisa eu posto aqui novamente.

    Abraços !


    Diego Murakami

    terça-feira, 13 de maio de 2014 19:59