簡體   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