removehandler - subscribe to custom event c#
Controladores de eventos C# (3)
Es posible obtener una lista de todos los suscriptores llamando a GetInvocationList ()
public class Foo
{
public int GetSubscriberCount()
{
var count = 0;
var eventHandler = this.CustomEvent;
if(eventHandler != null)
{
count = eventHandler.GetInvocationList().Length;
}
return count;
}
public event EventHandler CustomEvent;
}
¿Hay alguna forma de obtener el número de manejadores de eventos adjuntos al evento? El problema es que en algún lugar del código continúa adjuntando manejadores a un evento, ¿cómo puede resolverse?
Puede implementar sus propios métodos para agregar / eliminar eventos:
private EventHandler _event;
public event EventHandler MyEvent
{
add
{
if (_event == null) _event = value;
_event += value;
}
remove
{
if (_event != null) _event -= value;
}
}
Puede sobreescribir la operación de agregar y eliminar (+ = y - =) para el evento como se ve en el siguiente código:
private int count = 0;
public event EventHandler MyEvent {
add {
count++;
// TODO: store event receiver
}
remove {
count--;
// TODO: remove event receiver
}
}