События ASP.NET masterpage

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

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

в событии page_load.

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

Спасибо

2 ответа

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

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

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

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

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

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

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

События в ASP.NET Master и Content Pages

Другие вопросы по тегам