我在Page_Load事件,即一個頁面中訂閱的事件在母版我在Page_Load事件的代碼ASP.NET母版事件
this.Master.Event1 += new Event1EventHandler(Master_Event1);
。
如果我不退訂的事件可以導致內存泄漏?什麼是退訂的適當方式?我應該在page_unload事件中執行它嗎?這將處理從頁面退出的用戶操作,但如果用戶關閉瀏覽器,那麼處理它的正確方法是什麼? Session.end在global.asax中?
感謝
我在Page_Load事件,即一個頁面中訂閱的事件在母版我在Page_Load事件的代碼ASP.NET母版事件
this.Master.Event1 += new Event1EventHandler(Master_Event1);
。
如果我不退訂的事件可以導致內存泄漏?什麼是退訂的適當方式?我應該在page_unload事件中執行它嗎?這將處理從頁面退出的用戶操作,但如果用戶關閉瀏覽器,那麼處理它的正確方法是什麼? Session.end在global.asax中?
感謝
事件處理程序列表在本質上是弱引用,這樣就不會造成內存泄露。你並沒有明確地刪除你所有的Click
以及任何處理程序,對嗎?
此外,Unload
事件與用戶關閉瀏覽器窗口無關。對我而言,這聽起來像是你誤解了網絡和/或ASP.NET的一些基本原理。
與Windows窗體或WPF不同,ASP.NET是無狀態的(所有Web服務器解決方案都是如此)。簡而言之,這意味着當GET請求進入時,Web服務器(IIS)處理請求並根據您構建的aspx頁面(使用或不使用主頁)生成一個html頁面。
因此,當您將事件處理程序掛接到從主頁面觸發的事件時,只能在相同請求,內容頁面中或可能加載到該內容頁面的任何用戶控件中處理它。
爲什麼你會在你的母版頁中觸發任何事件?如果您更多地告訴我們您正在尋找哪些功能,我們可能會提供替代方案 - 或許更好 - 解決方案。
瞭解更多關於ASP.NET在下面的MSDN頁面,或者只是谷歌自己knowlegde :)