Pregunta

¿Cuál es la mejor práctica para implementar IDisposable en un Winform?

  • Tengo un diálogo que extiende System.Windows.Forms.Form
  • El designer.cs generado ya contiene una implementación del método virtual Dispose (bool)
  • Mi formulario tiene un campo agregado manualmente que implementa IDisposable

Idealmente, podría conectarme a la anulación Dispos (bool) en el código generado para disponer el objeto IDisposable agregado manualmente. ¿Alguna recomendación sobre cómo hacer esto correctamente?

Gracias.

Scott

¿Fue útil?

Solución

Puede mover esa implementación de Dispose fuera de .designer.cs y en su .cs.

Otros consejos

Pero, entonces su campo debe ser un Componente (implementar la interfaz IComponent o algo similar). ¿No sería una exageración?

¿Quizás pueda adjuntar un controlador de eventos al evento Disposing y disponer sus campos en ese controlador de eventos?

(O simplemente agréguelos al método Dispose, no creo que sea un problema, ya que afaik, el código en el método Dispose no se regenera ... Idealmente, la implementación del método Dispose no debería haber estado en la clase * .designer.cs ...).

Anulo el registro de cualquier evento en el método Dispose que se encuentra en el formulario designer.cs

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
        base.Dispose(disposing);
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top