2011-09-16 13 views
17

¿Cómo uso RemoveHandler con métodos anónimos?RemoveHandler y métodos anónimos de VB.NET

Éste es cómo agregar un controlador para MyEvent caso de la clase MiClase

AddHandler MyClass.MyEvent, Sub() 
           ... 
          End Sub 

¿Cómo entonces utilizo RemoveHandler para eliminar el controlador para el evento MyEvent

Respuesta

26

En En general, si necesita darse de baja del evento, le recomendaría no usar un lambda como este y, en su lugar, usar un método estándar.

Dicho esto, aún puede usar el método anónimo, pero debe almacenar una referencia para cancelar la suscripción. Si debe darse de baja un método anónimo, como mínimo, debe almacenar el delegado en una variable para eliminarlo más tarde:

Dim subscription = Sub() 
          ' ... 
        End Sub 

AddHandler MyClass.MyEvent, subscription 

' Later 
RemoveHandler MyClass.MyEvent, subscription 
+1

Hace los sentidos. Si ese es el caso, no tiene sentido utilizar métodos anónimos cuando tengo que eliminarlo en otro momento. – acermate433s

+1

@ acermate433s: cierto, por lo que sugerí usar un método estándar. La única ventaja de un lambda, thoguh, es que puedes cerrar las variables locales en lugar de promocionarlas al nivel de clase, lo que a veces puede ser útil ... –

Cuestiones relacionadas