日期:2014-05-18  浏览次数:20850 次

Form的close()和Dispose()方法有什么区别啊?
close()是关闭窗体的意思,Dispose()是释放资源的意思,我就只知道这两句话,更具体的区别呢?

我自己都是 先close 然后再Dispose 这样写两句来关闭窗体的,这样子做好吗?或者是不是多余的,只要close就可以了?

还有,在一个窗体页面代码里建立的实例,假如直接点击窗体上的关闭按钮,那这些类的实例会不会自动释放的?比如Command对象。

------解决方案--------------------
在以下两种情况下调用 Close 不会释放窗体:(1) 窗体是多文档界面 (MDI) 应用程序的一部分且是不可见的;(2) 您是使用 ShowDialog 显示的该窗体。在这些情况下,需要手动调用 Dispose 来将窗体的所有控件都标记为需要进行垃圾回收。
------解决方案--------------------
功能如字面意思描述
Close - 关闭
Dispose - 清除/释放

Close表示将当前资源关闭,以Connection 数据库连接为例,如果是连接状态,调用Close之后,该连接会被关闭,但是后续依然可以Open并调用

Dispose表示将当前资源关闭,以Connection 数据库连接为例,如果是连接状态,调用Dispose之后,该连接会关闭并被销毁,打上回收标记.后续不可再直接调用该实例.

"执行与释放或重置非托管资源相关的应用程序定义的任务。"
http://msdn.microsoft.com/zh-cn/library/system.idisposable.dispose.aspx

实做了IDisposable接口.