2010-09-29 3 views
4

Есть ли способ получить число подключенных обработчиков событий к событию? Проблема в том, что где-то в коде он продолжает прикреплять обработчики к событию, как это можно решить?Обработчики событий C#

ответ

10

можно получить список всех абонентов, позвонив 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; 
    } 
} 
0

Вы можете перезаписать add- и удалить - операция (+ = и - =) для события, как видно из следующего кода:

private int count = 0; 
public event EventHandler MyEvent { 
    add { 
     count++; 
     // TODO: store event receiver 
    } 
    remove { 
     count--; 
     // TODO: remove event receiver 
    } 
} 
Смежные вопросы