黑马程序员技术交流社区
标题:
Close()关闭窗体与Application.Exit()关闭窗体的区别?
[打印本页]
作者:
似鱼非鱼
时间:
2013-10-25 03:23
标题:
Close()关闭窗体与Application.Exit()关闭窗体的区别?
Close()关闭窗体与Application.Exit()关闭窗体的区别?
作者:
茹化肖
时间:
2013-10-25 07:31
close关闭的是当前打开的窗体,exit强制退出整个程序。
作者:
一羽丶轻舟
时间:
2013-10-25 09:38
close关闭窗体,对象仍然存在,调用Close函数释放资源后可能还需要再次使用。
application.exit.整个程序进程结束,项目中的所有对象都会被销毁,退出整个应用程序。
作者:
追梦无悔
时间:
2013-10-25 10:24
close是关闭窗体,application.exit是退出整个应用程序
作者:
☜⑦圊⑥慾➹沼
时间:
2013-10-25 11:14
Application.Exit 方法
通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口。
Form.Close 方法
关闭窗体。
如果该窗体是应用程序的主启动窗体,则調用窗体的Close()方法,跟調用Application.Exit的效果差不多。
如果该窗体非主启动窗体,则只是关闭该窗体而不关闭整个应用程序。
如果是多线程应用程序,要想关闭整个应用程序,除了調用Application.Exit()方法或者主启动窗体的Close()之外,还需要显示的調用终止线程的代码。否则窗体虽然关闭了,看似应用程序退出了,其实线程依然还驻留在内存中工作。打开任务管理器依然可以看到。
作者:
我一直在等待
时间:
2013-10-25 20:18
close关闭的是当前打开的窗体,exit会退出整个程序,关闭所以打开的程序窗口。
作者:
吴彤辉
时间:
2013-10-25 23:06
Application.Exit() 方法
该方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。该方法并不强制应用程序退出。Exit()方法通常从一个消息循环内调用,该方法强制Run返回。
当调用 Application.Exit()方法以退出应用程序时,不引发 Form.Closed 和 Form.Closing 事件。如果在必须执行的其中一个事件中有验证代码,则在调用 Exit ()方法之前,应分别为每个打开的窗体调用 Form.Close()方法。
其实,程序从Application.Run(new Form1)开始,到Application.Exit()结束,//销毁窗体,回收资源除外
这之中,如果你打开了1个窗体,这两种方法就是一样,如果打开多个,比如你Form1里又开了form2,form3等等,那么,你除了Application.Run()参数以外的实例,执行close就是关闭那个窗体,程序不退出,Application.Exit就都关闭了。
但是 调用 Application.Exit() 并不一定能让程序立即退出,程序会等待所有的前台线程终止后才能真正退出。
解决方法:
1. 背景线程
为避免因为线程造成程序无法退出,可以将线程设置为后台线程(IsBackground = true)。
当然,这样一来,你需要自行处理后台线程的数据操作安全。
2. Environment.Exit(0);
该方法会强制进程关闭,并给操作系统一个退出代码。
作者:
黑马小子
时间:
2013-10-25 23:10
Application.Exit 方法 通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口。
Form.Close 方法 关闭窗体。
作者:
喜之郎果冻
时间:
2013-10-26 00:20
Application.Exit()是关闭退出整个应用程序
this.Close()关闭当前窗体。
作者:
aihuahuaxx
时间:
2013-10-28 09:13
简单明了的的说是Application.Exit()整个程序进程结束,退出整个程序。
Close()只是关闭而已,程序还存在。
作者:
李小熊
时间:
2013-10-28 09:32
Application.Exit 方法
通知所有消息泵必须终止,并且在处理了消息以后关闭所有应用程序窗口。
Form.Close 方法
关闭窗体。
如果该窗体是应用程序的主启动窗体,则調用窗体的Close()方法,跟調用Application.Exit的效果差不多。
如果该窗体非主启动窗体,则只是关闭该窗体而不关闭整个应用程序。
如果是多线程应用程序,要想关闭整个应用程序,除了調用Application.Exit()方法或者主启动窗体的Close()之外,还需要显示的調用终止线程的代码。否则窗体虽然关闭了,看似应用程序退出了,其实线程依然还驻留在内存中工作。打开任务管理器依然可以看到。
------------------------------
作者:
黑飞马
时间:
2013-10-28 11:33
close :它是针对窗体 ,关闭窗体 ,但对象仍然存在,
Application.Exit:整个程序进程结束,项目中所以对象都将被销毁,退出整个应用程序
作者:
马晓平
时间:
2013-10-28 21:19
Close()方法用来关闭窗体,Application.Exit()表示退出应用程序。下面我们主要看下这两个方法。
Close()方法表示如果该窗体是应用程序的主启动窗体,调用Close()方法和调用Application.Exit()的效果一样;如果如果该窗体不是主启动窗体,则只关闭该窗体而不会关闭整个应用程序。
Application.Exit()表示通知所有消息必须终止,并且在处理了消息以后关闭所有应用程序窗口。该方法停止在所有线程上运行的消息循环,并且关闭应用程序的所有窗口。它并不强制应用程序退出。
另外,如果是多线程应用程序,要想关闭整个应用程序,除了调用Application.Exit()方法或Close()方法外,还需要显示的调用终止线程代码。否则,虽然看似窗体关闭了,应用程序退出了,其实线程依然在内存中工作,打开任务管理器就可以看到。
还需要注意的是,当调用Application.Exit()退出应用程序时,不会引发Form.Closed和Form.Closing事件。如果必须执行的其中一个事件中有验证代码,则在调用Application.Exit()方法之前,应分别为每个打开的窗体调用Form.Close()方法。
作者:
追溯客
时间:
2013-10-29 07:44
问题解决请将分类设为"已解决".黑马有你更精彩
作者:
凌晨丶草未眠
时间:
2013-10-29 12:22
Close():用来关闭窗体,Application.Exit():退出应用程序
作者:
蒋东东
时间:
2013-10-30 14:55
个人理解。Close()仅仅是关闭调用该方法的窗体,.net内部在Close()方法中还调用了Dispose()用于释放该资源,与应用程序无关。而Application.Exit()则是直接退出整个应用程序。在多窗体或多线程应用程序中就能看出他们的区别,完全是两个概念。
作者:
zhangqiang
时间:
2013-11-6 14:05
Close():用来关闭当前窗体
Application.Exit():完全退出应用程序
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2