Application.Exit() 不起作用

本文关键字:不起作用 Exit Application | 更新日期: 2023-09-27 17:56:33

static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Exit();
            Application.Run(new Form1());
        }

为什么调用 Application.Exit() 后,应用程序没有立即退出?在此行之后,仍显示 Form1。如何立即退出应用程序。谢谢。

*

注意:*这只是一个例子。我在显示表单之前处理一些功能。在函数中,我有一个命令代码来调用Application.Exit(),但我想知道为什么应用程序没有立即退出。

我正在使用.NET Framework 4.0

Application.Exit() 不起作用

从逻辑上讲,它不起作用。如果Application未运行,则无法退出。

最好在这里使用Environment.Exit

Application.Exit 说:

通知所有消息

泵它们必须终止,然后在处理完消息后关闭所有应用程序窗口。

问题是应用程序的消息泵在调用 Run 并创建窗体之前不会启动。

Exit 方法通常从消息循环中调用,并强制 Run 返回。

Application.Exit 是关闭程序的"好方法"。未完成的窗口消息将被处理,然后才关闭所有窗口。这也意味着,Application.Exit仅在Windows消息循环运行时才有意义,即当程序在Application.Run内时。您在 Application.Run 之前调用Application.Exit,因此没有要退出的消息循环。

从文档中:

通知所有消息泵它们 必须终止,然后关闭所有 消息后的应用程序窗口 已处理。

您正在寻找的可能是System.Environment.Exit,它或多或少地杀死了该过程。 Environment.Exit仍然做一些清理。如果需要立即终止进程,可以使用 System.Environment.FailFast。

下面的代码应该对您有所帮助。

        if (Application.MessageLoop)
            Application.Exit();
        else
            Environment.Exit(1);

添加 return; 语句而不是Application.Exit();

此时应用程序甚至没有运行。 调用退出不起作用。 在主函数中,您要返回。 喜欢这个:

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        return;
        Application.Run(new Form1());
    }
根据

MSDN,Application.Exit()

通知所有消息

泵它们必须终止,然后在处理完消息后关闭所有应用程序窗口。

由于还没有应用程序窗口,因此没有任何反应(据我了解)。然后启动应用程序,因为Application.Exit()不会像您认为的那样停止程序执行。

我假设你的问题实际上并不像你在问题中描述的那么简单——无论如何,简单地return;而不打电话Application.Run()可能是解决方案。