Tengo una bastante corto pregunta sobre controladores de eventos anónimos:controladores de eventos anónimo y desechar
Este es el código que tengo:
public void AddTestControl(Control ctrl)
{
ctrl.Disposed += (o, e) => { RemoveTestControl(ctrl); };
ctrl.SomeEvent += _Control_SomeEvent;
}
public void RemoveTestControl(Control ctrl)
{
ctrl.SomeEvent -= _Control_SomeEvent;
}
Es éste el código de multa, o Si el Código ser reescrito para eliminar el controlador de eventos Disposed? Algo como esto:
public void AddTestControl(Control ctrl)
{
ctrl.Disposed += _Control_Disposed;
ctrl.SomeEvent += _Control_SomeEvent;
}
public void RemoveTestControl(Control ctrl)
{
ctrl.Disposed -= _Control_Disposed;
ctrl.SomeEvent -= _Control_SomeEvent;
}
afaik nadie promete el orden de ejecución de los controladores de eventos. – b0rg
Pero mi pregunta es más sobre el evento Disposed. ¿Debo separarlo o la primera muestra de código está bien? – juFo
@juFo Suponiendo que la razón por la que pregunta es porque le preocupan las pérdidas de memoria, entonces ** no, no necesita separar los manejadores de eventos usted mismo **. Como el objeto 'Control' tiene el mismo tiempo de vida que el' Page' o 'Form' que contiene los manejadores de eventos, saldrán del alcance juntos. –