A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐宏伟 中级黑马   /  2012-9-3 13:54  /  2909 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在编写WinForm程序的时候,退出程序有两种方式:
this.Close();和Applicaition.Exit();  这两者之间的区别是什么?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

7 个回复

倒序浏览
1.若在一个子窗口中关闭整个应用程序的进程,采用Application.Exit();
2.从子窗口关闭当前窗体就用this.close()方法。
回复 使用道具 举报
Application.Exit()应用程序退退出  
通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口
this.Close()当前窗口退出
如果该窗体是应用程序的主启动窗体,则調用窗体的Close()方法,跟調用Application.Exit的效果差不多。
如果该窗体非主启动窗体,则只是关闭该窗体而不关闭整个应用程序。

如果是多线程应用程序,要想关闭整个应用程序,除了調用Application.Exit()方法或者主启动窗体的Close()之外,还需要显示的調用终止线程的代码。否则窗体虽然关闭了,看似应用程序退出了,其实线程依然还驻留在内存中工作。打开任务管理器依然可以看到

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
许庭洲 发表于 2012-9-3 14:33
1.若在一个子窗口中关闭整个应用程序的进程,采用Application.Exit();
2.从子窗口关闭当前窗体就用this.clo ...

好的   谢谢!
回复 使用道具 举报
mjbtdym 发表于 2012-9-4 09:08
Application.Exit()应用程序退退出  
通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口
...

嗯   谢谢了!
回复 使用道具 举报
this.close();关闭的是窗体。
Application.Exit()关闭的是应用程序。
回复 使用道具 举报
this.close();是关闭当前窗体;
Application.Exit();是关闭所用应用程序创体;
回复 使用道具 举报
1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;
2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;
3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;
4.System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马