Supongamos que tengo un objeto que existe mientras dure una aplicación. Llamémoslo GlobalWorker. GlobalWorker tiene eventos, p. UserLoggedIn al que otros objetos pueden suscribirse. Ahora imagine que tengo una página de Silverlight o una página asp.net o algo así, que se suscribe al evento UserLoggedIn cuando se construye.Manejadores de eventos y objetos de por vida de aplicación en C# - ¿debo desenganchar?
public SomePage()
{
GlobalWorker.Instance.UserLoggedIn += new EventHandler(OnUserLoggedIn);
}
private void OnLoggedIn(object sender, EventArgs e)
{
}
¿La existencia de este evento impide que la página sea recogida de basura? Si es así, ¿cuál es el mejor patrón para usar en esta instancia: manejadores de eventos débiles, mueva la suscripción al evento Load y anule la suscripción en el evento UnLoad?
También es un problema común en Windows Forms. –
¡Diablos, incluso un problema es JavaScript! – Gabe
¿Es preferible el patrón de 'evento débil' para simplemente anular el registro del controlador de eventos en las clases de oyentes porque es más general (y requiere menos código [redundante])? –