Domanda

Qual è la migliore pratica per l'implementazione di IDisposable su un Winform?

  • Ho una finestra di dialogo che estende System.Windows.Forms.Form
  • Il designer.cs generato contiene già un'implementazione del metodo virtuale Dispose (bool)
  • Il mio modulo ha un campo aggiunto manualmente che implementa IDisposable

Idealmente, sarei in grado di agganciare l'override Dispos (bool) nel codice generato per disporre l'oggetto IDisposable aggiunto manualmente. Qualche consiglio su come farlo correttamente?

Grazie.

Scott

È stato utile?

Soluzione

Puoi spostare l'implementazione di Dispose da .designer.cs e in .cs.

Altri suggerimenti

Ma allora il tuo campo deve essere un Componente (implementa l'interfaccia IComponent o qualcosa di simile). Non sarebbe un po 'eccessivo?

Forse puoi associare un gestore di eventi all'evento Disposing e disporre i tuoi campi in quel gestore di eventi?

(O semplicemente aggiungerli al metodo Dispose - Non penso che sarà un problema, dal momento che il codice nel metodo Dispose non è rigenerato ... Idealmente, l'implementazione del metodo Dispose non dovrebbe essere stata nella classe * .designer.cs ...).

Annullamento della registrazione di qualsiasi evento nel metodo Dispose trovato in designer.cs del modulo

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
        base.Dispose(disposing);
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top