|
Отписаться от события.
|
|||
---|---|---|---|
#18+
Есть некое глобальное событие. Код: c# 1.
Так, как подписаться может любой, решил по возможности обезопаситься и сделал обертку типа Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Подписка работает. Код: c# 1.
А отписка нет. Код: c# 1.
Пока смотрю в сторону IObservable<T> ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2014, 15:14 |
|
Отписаться от события.
|
|||
---|---|---|---|
#18+
Логично, ибо Вы создаёте новый delegate, на который указатель больше нигде не сохраняется. А для отписки нужно использовать тот ж самый экземпляр delegate. Если уж нужно перехватывать исключения, делайте это при вызове события. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2014, 15:38 |
|
Отписаться от события.
|
|||
---|---|---|---|
#18+
Ilya81, Тут тоже создается, но отписывается. Код: c# 1. 2. 3. 4. 5.
Все дело в MulticastDelegate.Equals, надо отписать в MS пусть усовершенствуют :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2014, 15:59 |
|
Отписаться от события.
|
|||
---|---|---|---|
#18+
можно еще сюда смотреть... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2014, 16:52 |
|
Отписаться от события.
|
|||
---|---|---|---|
#18+
ЕвгенийВIlya81, Тут тоже создается, но отписывается. Код: c# 1. 2. 3. 4. 5.
Все дело в MulticastDelegate.Equals, надо отписать в MS пусть усовершенствуют :) Если Вы используете именованный метод класса, то экземпляр delegate будет всегда один. А для лямбда-выражений каждый раз новый. Так что с подпиской на события лямбда выражениями только два варианта: 1). сохранять в какую-то переменную указатель на delegate; 2). если отписываться от события не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2014, 18:00 |
|
|
start [/forum/topic.php?fid=20&msg=38786764&tid=1402317]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 353ms |
total: | 475ms |
0 / 0 |