События главной страницы ASP.NET - PullRequest
1 голос
/ 06 декабря 2010

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

this.Master.Event1 += new Event1EventHandler(Master_Event1);

в событии page_load.

Если я не отписываюсь отсобытие может вызвать утечку памяти?Каков был бы подходящий способ отписаться?Должен ли я сделать это в событии page_unload?Это будет обрабатывать действие пользователя по выходу со страницы, но как правильно обработать его, если пользователь закроет браузер?Session_end в global.asax?

Спасибо

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

Списки обработчиков событий по своей сути являются слабыми ссылками, поэтому не вызовут утечку памяти. Вы явно не удаляете все свои Click и любые обработчики, не так ли?

Кроме того, событие Unload не имеет ничего общего с пользователем, закрывающим окно браузера. Мне кажется, вы неправильно поняли некоторые основы Интернета и / или ASP.NET.

0 голосов
/ 06 декабря 2010

В отличие от Windows Forms или WPF, ASP.NET не имеет состояния (как и все остальные решения для веб-серверов). Короче говоря, это означает, что когда приходит запрос GET, веб-сервер (IIS) обрабатывает запрос и генерирует HTML-страницу на основе созданной вами страницы aspx (с или без главной страницы).

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

Зачем вам запускать какие-либо события на главной странице? Если вы расскажете нам больше о том, какую функциональность вы ищете, мы сможем предложить альтернативное - может быть, даже лучшее - решение.

Узнайте больше о ASP.NET на следующих страницах MSDN или просто Google, чтобы узнать легенду:)

Обзор жизненного цикла страницы ASP.NET

События на главной странице и страницах содержимого ASP.NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...