Показать сообщение отдельно
Старый 29.06.2016, 10:58   #1
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Делегаты и Эвенты

Возникла необходимость отписаться ото всех подписчиков события (хотят они того или нет).
Нашёл пару тем на стэке.
Кто-то сказал, что достаточно занулить переменную.
Я не поверил. А вот второй ответ похож на правду:
if (myDlgHandler != null)
  foreach (var 
d in myDlgHandler.GetInvocationList())
       
myDlgHandler -= (as MyDelegate); 
Хотел написать универсальный экстеншен, но увы, нельзя юзать конструкцию
where T : class, Delegate
И второе - решарпер предостерегает: http://www.jetbrains.com/help/reshar...btraction.html
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nex (19.11.2016)