窗体释放

nikolaichow 2012-11-13 09:13:00
窗体给调用,运行完毕后直接将窗体释放掉,那么窗体中的资源会自动释放吗?
比如:1个窗体中有3个Datatable变量,那么Form1.dispose()会自动将Form1中的3个Datatable释放掉吗?或者还是需要在Form1_Closed事件中做datatable.dispose()
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinodzh 2012-11-15
  • 打赏
  • 举报
回复
你要理解gc, gc会回收没有引用的托管对象。 dispose接口里基本做2个事情。 将非托管的资源释放掉。 将托管的去引用。 你窗体里的datatable不是public的并且没有被传到其他窗体或类里用。就不要担心。gc会处理他的。 但是要注意一点。掉dispose的时候程序不见得会掉gc.只有当框架认为你程序占内存太高了才会调用gc. 频繁的调用gc会有性能影响的,他吧会托管堆的东西重新排列。
SocketUpEx 2012-11-13
  • 打赏
  • 举报
回复
/// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
仔细看看Form1.Designer.cs的代码吧
nikolaichow 2012-11-13
  • 打赏
  • 举报
回复
那么窗体中有几个控件,那么在Closed时是否要释放?
引用 1 楼 hdt 的回复:
如果不涉及.net无法管理的资源,不用dispose 所以 datatable 不用
真相重于对错 2012-11-13
  • 打赏
  • 举报
回复
如果不涉及.net无法管理的资源,不用dispose 所以 datatable 不用

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧