App.Exit不会立即退出?
我认为Application.Exit
导致应用程序退出imemdiately,但我可以看到,根据下面的示例,它将在for循环结束后退出。此外,当这个命令将强制应用程序退出?App.Exit不会立即退出?
for (int I = 0; I < 1000; I++)
{
if (I == 1)
Application.Exit();
}
Application.Exit()将导致应用程序返回到基础消息泵后退出。如果你在UI线程中运行的代码,这会不会是,直到你从你在任何UI方法返回
从MSDN(如按钮单击处理程序。):
通知内容所有消息泵必须终止,然后在消息处理后关闭所有应用程序窗口。
-
此方法不一定强制应用程序退出。 Exit方法通常在消息循环中调用,并强制Run返回。要仅退出当前线程的消息循环,请调用ExitThread。
检查MSDN
exit方法停止所有线程所有正在运行的消息循环,并关闭应用程序的所有窗口。此方法不一定强制应用程序退出。 Exit方法通常在消息循环中调用,并强制Run返回。要仅退出当前线程的消息循环,请调用ExitThread。
问题“我现在怎么退出?”如果是这样,请使用Environment.FailFast - 这是最快的出路,作为额外的奖励,您可以在事件日志中留下条目。由于它说MSDN,
这种方法终止进程 没有运行任何活动的try /终于 块或终结。
故障快速转移方法的消息 字符串写入Windows应用程序 事件日志,创建您的应用程序 的转储,然后终止 当前进程。邮件字符串为 也包含在向Microsoft提供的 错误报告中。
使用FAILFAST方法,而不是 退出方法来终止您 应用程序如果您 应用程序的状态被损坏无法修复, 和执行应用程序的 的try/finally块和终结将 腐败的节目资源。
请注意,FailFast本质上等同于强制进程从任务管理器关闭,并会导致显示经典的丑陋Windows错误消息。它只能在极端情况下使用(例如UI线程死锁)。 – 2011-06-01 15:25:50
@丹 - 同意,这是一个很好的投掷你的手中的空气和保释技术,当有人点击退出按钮时不会运行。测试WER或重启/恢复代码也很棒。 – 2011-06-01 15:27:46