IDisposable Winform
-
19-08-2019 - |
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
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);
}