是否有必要对通过LoadControl动态加载并添加到页面的控件树中的控件/对象调用Dispose?
发布于 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或/和垃圾收集器。
https://stackoverflow.com/questions/8480159
复制相似问题