Pergunta

O que é a melhor prática para a implementação de IDisposable em uma Winform?

  • Eu tenho uma janela que se estende System.Windows.Forms.Form
  • Os designer.cs gerados já contém uma implementação do método virtual Dispose (bool)
  • O meu formulário tem um campo adicionado manualmente que implementa IDisposable

Idealmente, seria capaz de ligar-se ao Dispôs (booleano) substituição no código gerada a dispor o objeto IDisposable adicionado manualmente. Quaisquer recomendações sobre como fazer isso corretamente?

Graças.

Scott

Foi útil?

Solução

Você pode mover que a implementação Descarte fora das .Designer.cs e em seus cs.

Outras dicas

Mas, em seguida, seu campo precisa ser um componente (implementar a interface IComponent ou algo similar). Isso não seria um pouco de exagero?

Talvez você pode anexar um eventhandler para o evento Eliminar, e dispor seus campos em que eventhandler?

(Ou simplesmente adicioná-los ao método Dispose - Eu não acho que vai ser um problema, já que afaik, o código no método Dispose não é regenerado ... Idealmente, a implementação Dispose método não deveria ter sido na classe * .Designer.cs ...).

Eu unregister quaisquer eventos no método Dispose encontrado em designer.cs do formulário

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
        base.Dispose(disposing);
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top