События в .NET
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



События в .NET Expand / Collapse
Автор
Сообщение
07.11.2005 17:36
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 31.01.2006 11:44
Сообщ.: 85, Visits: 936
Люди что за гон с событиями в .NET!!!
Ситуация такая есть объект А у него есть какое-то событие. Дальше есть два объекта(В и С), которые держат ссылку на объект А и подписаны на это событие (на событие они подписались динамически). Дальше хуже - объект В диспозиться, но делегат в объекте А все-равно держит ссылку на уничтоженный объект и вызывает у него событие...

Короче это становиться проблемой, если один объект подписывает другого на события... тогда начинается настоящая Ж...!!! И как прикажете с этим бороться?

P.S.: В принципе я придумал как обойти эту проблему - но решение мне не нравиться. Я в обработчике события проверяю что объект еще жив, а затем уже обрабатываю событие. Но это не решение - поскольку если объекты не уничтожаются - то они висят в памяти и когда-то все это весьма радостно рухнет!!!

Короче делитесь идеями 8).
Сообщ. #884289
07.11.2005 17:51
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
[quote="Sanych-sun"]Дальше хуже - объект В диспозиться, но делегат в объекте А все-равно держит ссылку на уничтоженный объект и вызывает у него событие...[/quote]
"Диспозиться" - то есть ты для него Dsipose() вызываешь? Если да, то это не удаляет объект из памяти. Он будет жить до тех пор пока на него есть ссылки их других живых объектов. Тебе нужно в Dispose() отписать его от события в классе A.

[quote="Sanych-sun"]Я в обработчике события проверяю что объект еще жив[/quote]
Каким образом?
Может приведешь пример кода чтобы легче было понять твою проблему?
Сообщ. #884293
07.11.2005 17:54
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.07.2006 17:11
Сообщ.: 484, Visits: 5 211
Проблема известная ;))

http://rsdn.ru/Forum/Message.aspx?mid=1462160&only=1

http://rsdn.ru/forum/Message.aspx?mid=1462157&only=1

ну и вообще поиском по РСДН
http://rsdn.ru/search/?q=%F1%EE%E1%FB%F2%E8%E5+dispose&mode=rtime&group=N&group=8
Сообщ. #884294
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 3:18