rt

解决方案 »

  1.   

    close只是关闭窗体。
    Exit结束应用程序。
    Dispose()是系统释放资源的。一般不用主动去调用。系统会自己调用的。
      

  2.   

    Apllication.Exit不会触发窗体的Form_Closing事件
      

  3.   

    form.close()是关闭窗体
    Appllication.Exit()是关闭程序
      

  4.   

    我是个比较菜的人,写点我看完msdn和作了些实践的理解,出来让高手们看看对不对。
    以下内容是在2.0环境下的,据说Form_Closing取代了原来的Closing,Form_Closed取代了原来的ClosedApllication.Exit会触发每个窗体的Form_Closing事件,在这个事件里可以用e.Cancel=true来撤销关闭过程(e 是事件处理函数的那个FormClosingEventArgs。如果撤销了,那么Apllication.Exit到此为止,它并不强制结束应用程序。 如果没有撤销,那么就会继续引发From_Closed事件,然后会有dispose的调用,释放资源(例如非托管资源,文件流,数据库联接?)这一过程才真正关上了窗口。 最后结束应用程序。Close方法直接引发当前窗体的Form_Closing,之后的过程也是Form_Closed,释放资源的Dispose。 如果应用程序只有这一个窗口的话,那么就继续main函数下的其他过程,然后退出应用程序。Dispose不管三七二十一,释放资源,关闭窗口。而且调用dispose的不同重载,会调用不同次数的disposing(bool disposing)。所以一般在用窗口时不会直接在事件处理中dispose,而是执行close。如果自己实现一个占用资源的类,可以直接使用dispose或是也将其封装在其他方法中,就像filestream等一样。关于dispose和finalize和析构函数我就一直搞不明白了,不是说用了 GC.SuppressFinalize就不会调用析构函数么? 为什么我做了一个析构函数后还是被调用了。