forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   Делегаты и Эвенты (http://forum.boolean.name/showthread.php?t=20339)

Жека 29.06.2016 10:58

Делегаты и Эвенты
 
Возникла необходимость отписаться ото всех подписчиков события (хотят они того или нет).
Нашёл пару тем на стэке.
Кто-то сказал, что достаточно занулить переменную.
Я не поверил. А вот второй ответ похож на правду:
PHP код:

if (myDlgHandler != null)
  foreach (var 
d in myDlgHandler.GetInvocationList())
       
myDlgHandler -= (as MyDelegate); 

Хотел написать универсальный экстеншен, но увы, нельзя юзать конструкцию
Код:

where T : class, Delegate
И второе - решарпер предостерегает: http://www.jetbrains.com/help/reshar...btraction.html

Andvrok 29.06.2016 11:44

Ответ: Делегаты и Эвенты
 
По первому: правильно сделал, что не поверил.
По второму: в чём суть вопроса? Ну да, решарпер подчеркивает код при использовании + и - с делегатами, потому что они работают неочевидно. Но это только для вызовов делегатов, поэтому, если этот вопрос связан с предыдущим, то я не уловил суть.

Жека 29.06.2016 15:11

Ответ: Делегаты и Эвенты
 
Вопроса нет.:)
Просто поделился находкой, вдруг кому-то пригодится.


Часовой пояс GMT +4, время: 10:14.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot