C#事件处理程序

问题描述:

有没有办法获取连接的事件处理程序的数量?问题在于代码中的某个地方继续处理事件,这怎么解决?C#事件处理程序

很可能得到所有用户的列表,可以覆盖添加 - 删除和 - 操作(+ =和 - =)如见于下面的代码事件:

private int count = 0; 
public event EventHandler MyEvent { 
    add { 
     count++; 
     // TODO: store event receiver 
    } 
    remove { 
     count--; 
     // TODO: remove event receiver 
    } 
} 

您可以实现自己的事件添加/删除方法:通过调用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; 
} 

private EventHandler _event; 

public event EventHandler MyEvent 
{ 
    add 
    { 
    if (_event == null) _event = value; 
    _event += value; 
    } 

    remove 
    { 
    if (_event != null) _event -= value; 
    } 
}