2009-09-01 12 views

Respuesta

2

¿Es necesario cancelar la suscripción? ¿Se mantiene una referencia al control del usuario después de haber sido descargado? De lo contrario, no debe preocuparse por los controladores de eventos porque tan pronto como se elimina el control del usuario de la memoria, también lo hacen los controladores de eventos. No se filtran referencias de esa manera.

+0

Así que si control de usuario está escuchando algo, y control de usuario se sale del ámbito, a continuación, el controlador de eventos desaparece y el control de usuario será coleccionado como debería. Mientras que si algo sale del alcance, no se recogerá hasta que UserControl se anule la suscripción o salga del alcance mismo. ¿Lo entendí bien? – Svish

+2

@Svish: No. Si control de usuario está escuchando algo, y control de usuario se sale del ámbito, se ** ** No se recogerá control de usuario, como algo todavía mantiene una referencia al control de usuario. I Algo sale de alcance y UserControl no contiene ninguna referencia al mismo, se recopilará algo. – dtb

+0

Así, en otras palabras, si existirá algo después de que el control de usuario muere, voy a tener que darse de baja para el control de usuario para ser recogido? – Svish

1

Como otros han dicho es que hay realmente una necesidad de darse de baja en el escenario?

Si realmente necesita para darse de baja sin embargo lo hacen exactamente lo contrario de suscribirse:

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

Pero, ¿dónde lo haría? – Svish

4

Hay son momentos en los que se quiere hacer esto (por ejemplo, cuando se utiliza CAB).
Para completar, la respuesta a su pregunta es:

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 
} 

También podría invalidar Dispose()

+0

El problema que este control no tiene ninguna referencia a los padres o formulario principal. –

Cuestiones relacionadas