Sprawdzanie czy metoda jest podpięta do danego zdarzenia

Czasami chcemy mieć pewność, że zdarzenie nie zostanie podpięte dwa razy do tej samej metody. Przyjrzyjmy się jak to zrobić w C#:

private EventHandler _Event;

public event EventHandler ExampleEvent
{
  add
  {
      if (_Event == null || !_Event.GetInvocationList().Contains(value))
          _Event += value;
  }

  remove
  {
      _Event -= value;
  }
}

Rozwiązaniem jest użycie metody GetInvocationList. Następnie podłączając metody do zdarzenia za pomocą += mamy pewność, że nie będzie duplikatów i metoda nie będzie wywoływana kilkukrotnie.

Leave a Reply

Your email address will not be published.