转载:Application.Exit()到底退出了什么

遇到一个unhandledexception的bug,查找原因后发现Application.Exit()之后的代码也会被执行,
if (attemptsCount > attemptsMax)
{
Application.Exit();
}

WMainForm form = new WMainForm();
... more initializations ...
Application.Run(form);

不由对Application.Exit()的用法产生了困惑,难道Application.Exit()不是退出整个应用程序吗?通过查MSDN得知:

Exit停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。该方法并不强制退出该应用程序。Exit方法通常从一个消息循环内调用,该方法强制Run返回。若要只退出当前线程的某个消息循环,请调用ExitThread。

Exit引发下列事件并执行关联的条件操作:
*为OpenForms属性表示的各个窗体引发FormClosing事件。可以通过将这些窗体的FormClosingEventArgs参数的Cancel属性设置为true,取消此事件。
*如果多个处理程序的其中之一取消该事件,则Exit将返回而无进一步操作。否则,将为每个打开的窗体引发FormClosed事件,然后关闭所有正在运行的消息循环和窗体。

也就是说Exit会引发被应用程序打开的所有窗体的FormClosing和FormClosed事件。而且,如果某个窗口的FormClosingEventArgs参数的Cancel属性被设置为true,那么Exit将不会关闭所有窗口和停止所有的消息循环。

从上面可以知道Application.Exit()并不强制退出应用程序,要想强制退出整个应用程序要用Environment.Exit():终止当前进程并为基础操作系统提供指定的退出代码。

转载:http://dohkoos.name/?cat=5

  

爱华网本文地址 » http://www.413yy.cn/a/25101014/212961.html

更多阅读

电影发狂 《一代宗师》到底讲了什么? 一代宗师 电影

从各路媒体的集体讨论和公众多极分化的口碑来看,罕有人真正看懂了《一代宗师》,因而不论奔着动作戏去的,情感戏去的,还是奔着王家卫名头去的,要么真失望,要么假兴奋。实际真正看懂《一代宗师》后会对此片轻扯一下帽遮,不发一语,擦肩而走。许

“人不为己天诛地灭”到底说了什么? 八仙饭店之天诛地灭

“人不为己,天诛地灭”,作为极端自私自利的典型俗语,已经被批判和否定多少年了,然而,它的真正话义人们理解了吗?一句俗言,只有透射社会普遍的思想意识和道德意识所容忍的人情世故人性善恶,才会广泛长久的流行,才具有流行生命力。人不

声明:《转载:Application.Exit()到底退出了什么》为网友叻關分享!如侵犯到您的合法权益请联系我们删除