2009-09-01 10 views

risposta

2

È necessario annullare l'iscrizione a tutti? Un riferimento al controllo utente viene mantenuto dopo che è stato scaricato? In caso contrario, non è necessario preoccuparsi dei gestori di eventi perché, non appena il controllo utente viene rimosso dalla memoria, lo sono anche i gestori di eventi. Non perdi i riferimenti in questo modo.

+0

Quindi, se UserControl è l'ascolto di qualcosa, e UserControl esce dallo scope, quindi il gestore di eventi scompare e l'UserControl sarà raccolto come dovrebbe Mentre se qualcosa va fuori dal campo di applicazione, non verrà raccolto finché UserControl non annulla la sottoscrizione o esce dall'ambito stesso. Ho capito bene? – Svish

+2

@Svish: No. Se UserControl sta ascoltando Something e UserControl esce dall'ambito, UserControl verrà ** non ** raccolto, poiché Something detiene ancora un riferimento a UserControl. I Qualcosa va fuori dal campo di applicazione e UserControl non contiene alcun riferimento ad esso. Qualcosa verrà raccolto. – dtb

+0

Quindi, in altre parole, se qualcosa esisterà dopo che l'UserControl è morto, dovrò annullare l'iscrizione per l'UserControl da raccogliere? – Svish

1

Come altri hanno già detto è davvero necessario annullare l'iscrizione nel proprio scenario?

Se si ha realmente bisogno di annullare l'iscrizione tuttavia si fanno esattamente il contrario di sottoscrizione:

UserControl1.Click -= new EventHandler(UserControl1_Click); 
+0

Ma dove lo farei? – Svish

4

Ci sono momenti in cui si vorrebbe fare questo (ad esempio, quando si utilizza CAB).
Per completezza, la risposta alla tua domanda è:

protected override void OnCreateControl() 
{ 
    base.OnCreateControl(); 
    if(!DesignMode) //only time this.ParentForm should be null 
     this.ParentForm.FormClosing += ParentForm_FormClosing; 
} 

private void ParentForm_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    //Unregister events here 
} 

Si potrebbe anche ignorare Dispose()

+0

Il problema che questo controllo non ha riferimento né alla forma padre o genitore. –

Problemi correlati