App.Exit不会立即退出?

时间:2011-06-01 13:55:00

标签: c# winforms loops exit

我认为Application.Exit导致应用程序无法退出,但我可以看到,根据下面的示例,它将在for循环结束后退出。此命令何时强制应用程序退出?

for (int I = 0; I < 1000; I++)
{
    if (I == 1)
        Application.Exit();
}

5 个答案:

答案 0 :(得分:9)

正如您所见here,此方法“通知所有消息泵必须终止它们”和“此方法不会强制应用程序退出。”

答案 1 :(得分:6)

Application.Exit()将导致应用程序在返回基础消息泵后退出。如果你在UI线程中运行代码,那么直到你从你所处的任何UI方法返回时才会这样(例如按钮点击处理程序。)

答案 2 :(得分:3)

问题是“我现在该如何退出?”如果是这样,请使用Environment.FailFast - 这是最快的出路,作为额外奖励,您可以在事件日志中留下一个条目。正如它在MSDN上所说的那样,

  

此方法终止进程   没有运行任何活动的try / finally   块或终结器。

     

FailFast方法写入消息   字符串到Windows应用程序   事件日志,创建您的转储   应用程序,然后终止   目前的过程。消息字符串是   也包含在错误报告中   微软。

     

使用FailFast方法代替   退出方法终止你的   申请如果您的状态   应用程序损坏无法修复,   并执行您的应用程序   try / finally块和终结器会   腐败的计划资源。

答案 3 :(得分:2)

来自MSDN

  

通知所有消息泵必须终止,然后在处理完消息后关闭所有应用程序窗口。

-

  

此方法不一定强制应用程序退出。 Exit方法通常在消息循环中调用,并强制Run返回。要仅退出当前线程的消息循环,请调用ExitThread。

答案 4 :(得分:1)

检查MSDN

  

Exit方法停止所有线程上所有正在运行的消息循环,并关闭应用程序的所有窗口。此方法不一定强制应用程序退出。 Exit方法通常在消息循环中调用,并强制Run返回。要仅退出当前线程的消息循环,请调用ExitThread。