Нужно ли отписываться (вручную подписываться) на события в asp.net? - PullRequest
5 голосов
/ 06 декабря 2008

Применяются ли в asp.net?

те же самые лучшие правила, касающиеся подписки / отмены подписки на события

Я знаю, что это может показаться глупым вопросом, но когда я думаю об этом, я никогда не видел кода, где люди сначала подписываются на событие на странице, а затем отписываются позже в веб-запросе.

Пример 1: На странице в методе Page_Load я подписываюсь на событие обновления в ListView. Должен ли я отписаться от этого события позже, например, в методе OnPreRenderComplete?

Пример 2: В паттерне пассивного просмотра представление (Управление страницей / Управление пользователями) будет вызывать событие всякий раз, когда докладчику необходимо что-либо сделать. Таким образом, докладчик должен подписаться на события в представлении, но должен ли он снова отписаться от событий?

С уважением, Эгиль.

Ответы [ 2 ]

4 голосов
/ 06 декабря 2008

Экземпляр страницы и все ее компоненты "выйдут из области видимости" после завершения запроса, например, они становятся подходящими для GC. Таким образом, ваш ListView выйдет из области видимости вместе с элементами управления Page / user. Вам не нужно отписываться (если вы не подписываетесь на событие, которое принадлежит какому-то синглтону, который выживает при каждом запросе, и, например, используете один из методов страницы в качестве обработчика событий).

То же самое действует для докладчика (опять же, если этот докладчик используется только с одной страницей и после этого выходит из области видимости).

2 голосов
/ 06 декабря 2008

Как правило, нет. Предполагается, что события выгружаются автоматически при выгрузке страницы. Должно быть. Раньше я сталкивался с ошибкой (в .NET 1.1), когда это было не так.

Я не буду беспокоиться об отказе от подписки, если не увижу проблему со страницей (например, метод, вызываемый 20 раз из фантома в стеке вызовов: обычно это признак того, что что-то не отписалось должным образом).

...