Как мы все знаем, мы можем создать EventHandler и добавлять к нему методы N раз. Как:
// Declare and EventHandler
public event EventHandler InternetConnectionAvailableEvent;
private void OnInternetConnectionAvailableEvent()
{
if (InternetConnectionAvailableEvent != null)
{
EventHandler handle = InternetConnectionAvailableEvent;
EventArgs e = EventArgs.Empty;
handle(this, e);
}
}
// IN OTHER CLASS WHERE I USE THE EVENT
// Set the method name to handle the event
monitorInternet.InternetConnectionAvailableEvent += HandleInternetConnectionEvent;
void HandleInternetConnectionEvent(object sender, EventArgs e)
{
if (syncContext != null)
{
MonitorInternetConnection mic = (MonitorInternetConnection)sender;
if (mic != null)
{
syncContext.Post(o => InternetConnected(), null);
}
}
}
// To remove
monitorInternet.InternetConnectionAvailableEvent -= null;
ОБНОВЛЕНИЕ:
// To remove it should be
monitorInternet.InternetConnectionAvailableEvent -= HandleInternetConnectionEvent; // CORRECT
Тот же метод можно вызвать несколько раз, не удаляя его.
Если я создаю monitorInternet.InternetConnectionAvailableEvent -= null;
, все обработчики событий будут удалены. Я имею в виду, если он установлен в 2-3 раза и удаляется только один раз, сделав его нулевым, все остальные методы будут удалены автоматически.
Я считаю, что это будет, но я просто хотел подтвердить с вами экспертов. В то время как я не получил свой удовлетворительный ответ.
Пожалуйста, исправьте меня, если я ошибаюсь.