¿Se aplican las mismas reglas de prácticas recomendadas para suscribirse o darse de baja en eventos en asp.net?¿Debo anular la suscripción a eventos (manualmente suscritos a) en asp.net?
Sé que podría parecer una pregunta tonta, pero cuando lo pienso, nunca he visto ningún código donde las personas se suscriban por primera vez a un evento en una página y luego se dan de baja más adelante en la solicitud web.
Ejemplo 1: En una página, en el método Page_Load, me suscribo a un evento de actualización en un ListView. ¿Debo cancelar mi suscripción a ese evento más adelante, por ejemplo, en el método OnPreRenderComplete?
Ejemplo 2: En el patrón de vista pasiva, una vista (Control de página/Usercontrol) generará un evento cada vez que necesite que el presentador haga algo. Entonces, el presentador necesita suscribirse a eventos en la vista, pero ¿también necesita darse de baja de los eventos otra vez?
Recuerdos, Egil.
Ok, solo para estar seguro de que lo entiendo correctamente: si tengo un objeto singleton en la caché asp.net, un presentador no debe suscribirse a un evento, ya que el singleton no se eliminará cuando la página se apague de alcance, y el presentador se quedará así? –
Sí, he actualizado la redacción en mi respuesta. Básicamente, no debe dejar ninguna referencia a la página (ni a ningún control en ella) con sus objetos de larga vida. Un controlador de eventos podría ser una referencia. – liggett78
Solo un ejemplo: si se suscribe a un evento de un objeto de larga vida y utiliza uno de los métodos de su página como manejador, entonces su objeto de larga vida contiene una referencia a la página. Para el GC, la página aún está visible/dentro del alcance. Sin embargo, un método estático como controlador de eventos estaría bien. – liggett78