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

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

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

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




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

Никак, только сохранив лямбду где-нибудь.
...
Рейтинг: 0 / 0
Как удалить подписку на событие, которое было сделано через лямбду ?
    #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
Как удалить подписку на событие, которое было сделано через лямбду ?
    #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
Как удалить подписку на событие, которое было сделано через лямбду ?
    #38712578
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигайтак правильно будет ?
Так то правильно, но бессмысленно. Тогда уж методы используйте. Как в самом первом сообщении.
...
Рейтинг: 0 / 0
Как удалить подписку на событие, которое было сделано через лямбду ?
    #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
Как удалить подписку на событие, которое было сделано через лямбду ?
    #38713456
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gandjustas,

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

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

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


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