Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как удалить подписку на событие, которое было сделано через лямбду ? / 8 сообщений из 8, страница 1 из 1
04.08.2014, 17:58
    #38712463
Ростигай
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить подписку на событие, которое было сделано через лямбду ?
Привет.

Для предотвращения утечек, необходимо отписывать все делегаты у объекта (в моем случае у формы).

Это делается так:

Код: c#
1.
2.
3.
4.
// Подписались
SystemEvents.DisplaySettingsChanged += new EventHandler(ehDisplaySettingsChanged);
// Отписались
SystemEvents.DisplaySettingsChanged -= new EventHandler(ehDisplaySettingsChanged);




Но как быть, если подписывание было в виде лямбды ?
...
Рейтинг: 0 / 0
04.08.2014, 18:51
    #38712513
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить подписку на событие, которое было сделано через лямбду ?
РостигайНо как быть, если подписывание было в виде лямбды ?

Никак, только сохранив лямбду где-нибудь.
...
Рейтинг: 0 / 0
04.08.2014, 18:59
    #38712521
Ростигай
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить подписку на событие, которое было сделано через лямбду ?
gandjustas,

так правильно будет ?
Код: c#
1.
2.
3.
      Action<object, EventArgs> acivatedAct = (o, e) => Console.WriteLine("Hello");
      Activated += new EventHandler(acivatedAct);
      Activated -= new EventHandler(acivatedAct);
...
Рейтинг: 0 / 0
04.08.2014, 19:40
    #38712541
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить подписку на событие, которое было сделано через лямбду ?
Ростигайgandjustas,

так правильно будет ?
Код: c#
1.
2.
3.
      Action<object, EventArgs> acivatedAct = (o, e) => Console.WriteLine("Hello");
      Activated += new EventHandler(acivatedAct);
      Activated -= new EventHandler(acivatedAct);


как-то так
...
Рейтинг: 0 / 0
04.08.2014, 21:10
    #38712578
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить подписку на событие, которое было сделано через лямбду ?
Ростигайтак правильно будет ?
Так то правильно, но бессмысленно. Тогда уж методы используйте. Как в самом первом сообщении.
...
Рейтинг: 0 / 0
04.08.2014, 23:47
    #38712629
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить подписку на событие, которое было сделано через лямбду ?
Ростигайgandjustas,

так правильно будет ?
Код: c#
1.
2.
3.
      Action<object, EventArgs> acivatedAct = (o, e) => Console.WriteLine("Hello");
      Activated += new EventHandler(acivatedAct);
      Activated -= new EventHandler(acivatedAct);



Посмотрите на RX, там очень хорошо подписки и обработка событий сделаны.
...
Рейтинг: 0 / 0
05.08.2014, 20:54
    #38713456
Ростигай
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить подписку на событие, которое было сделано через лямбду ?
gandjustas,

Хм... Вы предлагаете прикрутить RX к форме на обработку всех событий ? В принципе можно пальнуть из пушки по воробьям то конечно :)
Может даже это хороший вариант.
...
Рейтинг: 0 / 0
05.08.2014, 22:29
    #38713492
gandjustas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить подписку на событие, которое было сделано через лямбду ?
Ростигай,

Это смотря что тебе надо делать. Обычно проблема отписки от событий даже не стоит, если ты все правильно делаешь. Время жизни подписчика не превышает время жизни формы.

А если у тебя уникальный случай, то RX может оказаться очень в тему.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как удалить подписку на событие, которое было сделано через лямбду ? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]