我认为Application.Exit
导致应用程序无法退出,但我可以看到,根据下面的示例,它将在for循环结束后退出。此命令何时强制应用程序退出?
for (int I = 0; I < 1000; I++)
{
if (I == 1)
Application.Exit();
}
答案 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。