Application.Exit()不起作用

Leo*_* Vo 28 .net c#

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

为什么在调用Application.Exit()之后,应用程序不会立即退出?在这一行之后,Form1仍然显示.如何立即退出申请.谢谢.

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

我正在使用.NET Framework 4.0

lep*_*pie 37

逻辑上它不能工作.Application如果没有运行,则无法退出.

Environment.Exit在这里使用会更好.


SwD*_*n81 21

Application.Exit说:

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

问题是,在您调用Run并创建表单之前,应用程序的消息泵才会启动.

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


Chr*_*ser 12

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

从文档:

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

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

  • 如果您的应用程序**没有窗口**,这也适用. (2认同)

TBo*_*jnr 6

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


小智 5

下面的代码应该可以帮助你。

        if (Application.MessageLoop)
            Application.Exit();
        else
            Environment.Exit(1);
Run Code Online (Sandbox Code Playgroud)