我在动态构建的网页上有一些自定义控件,可以在页面加载时将代理添加到其事件处理程序中。
如果页面被刷新,我是否需要担心由于每次加载页面时添加这些事件处理程序而导致内存泄漏,或者页面中的所有内容是否都有GCd?
我似乎认为“页面”在每次加载时都会获得gc'd,并且唯一持久的项目就是会话变量,但这些来自于我在PHP中做的事情。我想知道是否有人对c#/ asp.net有任何具体内容。
APPEND :
我的代表只是在查看页面上的特定控件并与之交互,例如,当一个控件被更改时,另一个控件默认选择相应的值。
答案 0 :(得分:1)
每次用户向ASP.NET webserver发出请求时,都会创建新的Page类实例并遍历生命周期。因此,如果您有一些属性,则使用其默认值初始化它们。之后,修改后的页面将呈现为HTML并返回给用户。你还没有完全清楚你添加的代表是什么,所以一段代码可能会有所帮助,但我认为你不应该有任何问题。
因此重新创建了页面,会话数据由会话cookie获取,Viewstate数据由特殊输入隐藏字段提供。
页面生命周期可能对您有所帮助: http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx