C# Know how many EventHandlers are set?

后端 未结 3 637
生来不讨喜
生来不讨喜 2021-01-04 06:31

As we all know, we can create an EventHandler and add methods to it N number of times. Like:

   // Declare and EventHandler     
   public event EventHandler         


        
3条回答
  •  暖寄归人
    2021-01-04 07:10

    To find the number of event handlers, you can use this code:

    InternetConnectionAvailableEvent.GetInvocationList().Length;
    

    The following code demonstrates that MyEvent -= null does not clear the list of handlers.

    public static event EventHandler MyEvent;
    
    [STAThread]
    static void Main()
    {
       MyEvent += (s,dea) => 1.ToString();
       MyEvent -= null;
    
       Console.WriteLine(MyEvent.GetInvocationList().Length);
       // Prints 1
       MyEvent = null;
       Console.WriteLine(MyEvent == null);
       // Prints true
    }
    

    To clear the list (which is probably never a good idea), you can set the event to null (as long as you are in the class that declared the event).

提交回复
热议问题