黑马程序员技术交流社区

标题: 程序的退出? [打印本页]

作者: 徐宏伟    时间: 2012-9-3 13:54
标题: 程序的退出?
在编写WinForm程序的时候,退出程序有两种方式:
this.Close();和Applicaition.Exit();  这两者之间的区别是什么?
作者: 许庭洲    时间: 2012-9-3 14:33
1.若在一个子窗口中关闭整个应用程序的进程,采用Application.Exit();
2.从子窗口关闭当前窗体就用this.close()方法。
作者: mjbtdym    时间: 2012-9-4 09:08
Application.Exit()应用程序退退出  
通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口
this.Close()当前窗口退出
如果该窗体是应用程序的主启动窗体,则調用窗体的Close()方法,跟調用Application.Exit的效果差不多。
如果该窗体非主启动窗体,则只是关闭该窗体而不关闭整个应用程序。

如果是多线程应用程序,要想关闭整个应用程序,除了調用Application.Exit()方法或者主启动窗体的Close()之外,还需要显示的調用终止线程的代码。否则窗体虽然关闭了,看似应用程序退出了,其实线程依然还驻留在内存中工作。打开任务管理器依然可以看到
作者: 徐宏伟    时间: 2012-9-4 09:33
许庭洲 发表于 2012-9-3 14:33
1.若在一个子窗口中关闭整个应用程序的进程,采用Application.Exit();
2.从子窗口关闭当前窗体就用this.clo ...

好的   谢谢!
作者: 徐宏伟    时间: 2012-9-4 09:34
mjbtdym 发表于 2012-9-4 09:08
Application.Exit()应用程序退退出  
通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口
...

嗯   谢谢了!
作者: 廖创发    时间: 2012-9-5 12:07
this.close();关闭的是窗体。
Application.Exit()关闭的是应用程序。
作者: 霍永刚    时间: 2012-9-5 13:11
this.close();是关闭当前窗体;
Application.Exit();是关闭所用应用程序创体;
作者: 王永杰    时间: 2012-9-5 14:00
1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;
2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;
3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;
4.System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2