繁体   English   中英

Application.Exit()无法正常工作

[英]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在这里。

Application.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM