2010-12-06 64 views
1

我在Page_Load事件,即一個頁面中訂閱的事件在母版我在Page_Load事件的代碼ASP.NET母版事件

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

如果我不退訂的事件可以導致內存泄漏?什麼是退訂的適當方式?我應該在page_unload事件中執行它嗎?這將處理從頁面退出的用戶操作,但如果用戶關閉瀏覽器,那麼處理它的正確方法是什麼? Session.end在global.asax中?

感謝

回答

1

事件處理程序列表在本質上是弱引用,這樣就不會造成內存泄露。你並沒有明確地刪除你所有的Click以及任何處理程序,對嗎?

此外,Unload事件與用戶關閉瀏覽器窗口無關。對我而言,這聽起來像是你誤解了網絡和/或ASP.NET的一些基本原理。

0

與Windows窗體或WPF不同,ASP.NET是無狀態的(所有Web服務器解決方案都是如此)。簡而言之,這意味着當GET請求進入時,Web服務器(IIS)處理請求並根據您構建的aspx頁面(使用或不使用主頁)生成一個html頁面。

因此,當您將事件處理程序掛接到從主頁面觸發的事件時,只能在相同請求,內容頁面中或可能加載到該內容頁面的任何用戶控件中處理它。

爲什麼你會在你的母版頁中觸發任何事件?如果您更多地告訴我們您正在尋找哪些功能,我們可能會提供替代方案 - 或許更好 - 解決方案。

瞭解更多關於ASP.NET在下面的MSDN頁面,或者只是谷歌自己knowlegde :)

ASP.NET Page Life Cycle Overview

Events in ASP.NET Master and Content Pages