static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Exit();
Application.Run(new Form1());
}
为什么在调用Application.Exit()之后,应用程序不会立即退出?在这一行之后,Form1仍然显示。如何立即退出申请。感谢。
* 注意: *这只是一个例子。我在显示表单之前处理了一些函数。在函数中,我有一个命令代码来调用Application.Exit(),但我想知道为什么应用程序不会立即退出。
我正在使用.NET Framework 4.0
答案 0 :(得分:35)
逻辑上它无法正常工作。如果Application
未运行,则Environment.Exit
无法退出。
最好在这里使用{{1}}。
答案 1 :(得分:21)
通知所有消息泵必须终止,然后在处理完消息后关闭所有应用程序窗口。
问题是您的应用程序的消息泵在您调用Run并创建表单之前不会启动。
Exit方法通常在消息循环中调用,并强制Run返回。
答案 2 :(得分:11)
Application.Exit是关闭程序的“好方法”。处理未完成的Windows消息,然后才关闭所有窗口。这也意味着Application.Exit
仅在Windows消息循环运行时有意义,即程序在Application.Run
内时。您在Application.Exit
之前调用Application.Run
,因此没有消息循环退出。
来自文档:
通知所有消息泵他们 必须终止,然后关闭所有 消息后的应用程序窗口 已被处理。
您正在寻找的可能是System.Environment.Exit,这或多或少会杀死这个过程。 Environment.Exit
仍在做一些清理工作。如果您需要立即终止该过程,可以使用System.Environment.FailFast。
答案 3 :(得分:5)
添加return;
语句,而不是Application.Exit();
答案 4 :(得分:2)
此时应用程序甚至没有运行。调用退出无效。在您要返回的主要功能中。像这样:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
return;
Application.Run(new Form1());
}
答案 5 :(得分:1)
根据MSDN,Application.Exit()
通知所有消息泵必须终止,然后在处理完消息后关闭所有应用程序窗口。
由于还没有应用程序窗口,没有任何反应(据我所知)。然后你启动应用程序,因为Application.Exit()
没有像你认为的那样停止程序执行。
我认为你的问题实际上并不像你在问题中所描述的那么简单 - 无论如何只是简单return;
而没有调用Application.Run()
可能是解决方案。
答案 6 :(得分:1)
以下代码可以为您提供帮助。
if (Application.MessageLoop)
Application.Exit();
else
Environment.Exit(1);