[英]Application.Exit() not working
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Exit();
Application.Run(new Form1());
}
为什么在调用Application.Exit()之后,应用程序没有立即退出? 在此行之后,仍然显示Form1。 如何立即退出应用程序。 谢谢。
* 注意: *这仅是示例。 在显示表单之前,我会处理一些功能。 在函数中,我有一个命令代码来调用Application.Exit(),但我想知道为什么应用程序不会立即退出。
我正在使用.NET Framework 4.0
从逻辑上讲,它不起作用。 如果Application
未运行,则无法退出。
最好使用Environment.Exit
在这里。
通知所有消息泵它们必须终止,然后在处理完消息后关闭所有应用程序窗口。
问题是直到调用Run并创建表单后,您的应用程序的消息泵才会启动。
通常从消息循环内调用Exit方法,并强制Run返回。
Application.Exit是关闭程序的“好方法”。 未完成的Windows消息将被处理,然后所有窗口才会关闭。 这也意味着Application.Exit
仅在Windows消息循环运行时(即程序在Application.Run
内部)才有意义。 你叫Application.Exit
之前Application.Run
,所以没有消息循环退出。
从文档中:
通知所有消息泵它们必须终止,然后在处理完消息后关闭所有应用程序窗口。
您正在寻找的可能是System.Environment.Exit ,它或多或少会杀死进程。 Environment.Exit
仍会进行一些清理。 如果需要立即终止该过程,可以使用System.Environment.FailFast 。
增加return;
语句而不是Application.Exit();
下面的代码应为您提供帮助。
if (Application.MessageLoop)
Application.Exit();
else
Environment.Exit(1);
该应用程序当时甚至还没有运行。 呼叫出口无效。 在主函数中要返回。 像这样:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
return;
Application.Run(new Form1());
}
根据MSDN, Application.Exit()
通知所有消息泵它们必须终止,然后在处理完消息后关闭所有应用程序窗口。
由于还没有应用程序窗口,所以什么也没有发生(据我所知)。 然后,您随后启动应用程序,因为Application.Exit()
不会像您认为的那样停止程序执行。
我认为您的问题实际上并不像您在问题中描述的那么简单-在任何情况下都只需return;
无需调用Application.Run()
可能是解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.