在MSDN上的解释是:Application.Exit 方法
该方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。该方法并不强制应用程序退出。Exit 方法通常从一个消息循环内调用,该方法强制 Run 返回。若要只退出当前线程的某个消息循环,请调用 ExitThread。警告 当调用 Application.Exit 方法以退出应用程序时,不引发 Form.Closed 和 Form.Closing 事件。如果在必须执行的其中一个事件中有验证代码,则在调用 Exit 方法之前,应分别为每个打开的窗体调用 Form.Close 方法。 我对上面这段文字读得不是很明白,请牛人予以讲解,谢谢啦
该方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。该方法并不强制应用程序退出。Exit 方法通常从一个消息循环内调用,该方法强制 Run 返回。若要只退出当前线程的某个消息循环,请调用 ExitThread。警告 当调用 Application.Exit 方法以退出应用程序时,不引发 Form.Closed 和 Form.Closing 事件。如果在必须执行的其中一个事件中有验证代码,则在调用 Exit 方法之前,应分别为每个打开的窗体调用 Form.Close 方法。 我对上面这段文字读得不是很明白,请牛人予以讲解,谢谢啦
____________________________________________指的是Form在Close前如Closing事件中,进行相关验证确认是否关闭窗体
你要是直接咔嚓进程就是强制性的。验证代码就是诸如你关闭Maxthon时候,它跳出来一个确认对话框。
System.Windows.Forms.Application.Run(form);
不知道"该方法并不强制应用程序退出"的意思是不是说只是结束上面那句的运行,如果他下面还有语句的话,将继续运行.
一直以为Application.Exit()是退出整个程序,"该方法并不强制应用程序退出"也是刚刚知道,不知道上面的猜测对不对.
请高手出场!
所谓的不强制是指不强制结束这个进程里的其他线程,假如这个程序还开了其他的线程在结束时还没有关闭的,使用Application.Exit(),主线程是关闭了,但其他线程还是在跑的。如果是强制的,那么这个进程里所有的线程都会关闭的!!
"非强制性就是说它可以被打断、拦截。"
==================================
请问如何打断Application.Exit?一般阻止窗口被关掉,都是用 Form.Closing 中的验证代码来处理。Exit既然不触发 Form.Closing, Form.Closed,那有其他什么方法来打断呢?
"该方法并不强制应用程序退出。"我也才发现,不懂。。
英文原文为“This method does not force the application to exit. ”关注一下。
最保守的还是DISPOSE的时候出现非可控现象少一点 。