События 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, чтобы узнать легкость:)