首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET动态LoadControl处理

ASP.NET动态LoadControl处理
EN

Stack Overflow用户
提问于 2011-12-13 04:04:48
回答 1查看 561关注 0票数 0

是否有必要对通过LoadControl动态加载并添加到页面的控件树中的控件/对象调用Dispose?

EN

回答 1

Stack Overflow用户

发布于 2011-12-13 04:38:48

不,一旦响应完成,运行时就可以自由地清理与请求相关的所有内容,包括页面对象本身。这也适用于动态加载的控件,因为它们是页面控件集合的一部分。这应该是显而易见的,因为您必须在每次回发时重新创建它们。

如果UserControl使用非托管资源,则应使用override dispose (F.E.数据库连接)。控件本身将在页面被释放之前被隐式地释放。这是页面生命周期结束时事件的顺序:

  • Control: Unload(recursive)
  • Control: Dispose(recursive)
  • Page: Unload
  • Page: Dispose

作为提示,实现IDisposable的类应该在您处理完它后立即处理掉(UserControl不会)。但通常您会使用using-statement来完成此操作。

资源:

但是垃圾回收器是在这里做这项工作,还是控件的Dispose方法是作为页面生命周期的一部分来调用的呢?

调用Dispose不会为垃圾回收确定对象的优先级。它只是从内存中卸载对象的(非托管)资源。调用Dispose不会从内存中释放对象。只有GC在执行对象所在层代的集合时才会这样做(来自上面的first link )。

因此,我认为您误解了dispose或/和垃圾收集器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8480159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档