2010-09-29 271 views
4

有沒有辦法獲取連接的事件處理程序的數量?問題在於代碼中的某個地方繼續處理事件,這怎麼解決?C#事件處理程序

回答

10

很可能得到所有用戶的列表,可以覆蓋添加 - 刪除和 - 操作(+ =和 - =)如見於下面的代碼事件:

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

您可以實現自己的事件添加/刪除方法:通過調用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; 
} 
0

private EventHandler _event; 

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

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