簡體   English   中英

在調用System.exit(0)之后,應用程序繼續運行 - Java

[英]Application continues to run after System.exit(0) is called - Java

我正在嘗試在關閉之前清理我的應用程序中的資源,繼續我之前的問題( 檢測Java應用程序關閉時 )我已經實現了以下代碼,它完美地執行了清理操作。

//Intercept when the application closes
            Runtime.getRuntime().addShutdownHook(new Thread()
            {
                @Override
                public void run()
                {
                    //Reclaim resources from MIDI usage
                    if(_midiInstance.CleanUp())
                    {
                        Logger.Add("Closed resources successfully on ShutDown");
                    }
                    else
                    {
                        Logger.Add("Failed to close all resources on ShutDown");
                    }
                    System.exit(0);
                }
            });

雖然System.exit(0); 在沒有可見的GUI的情況下,應用程序繼續運行,理解並處理了調用。 我已經考慮過將System.exit(0)調用放在Thread之外但是它超出了范圍,沒有任何其他線程或流在運行。

在掛鈎到ShutDown事件以確保一切都關閉時,我需要采取額外的步驟嗎?

謝謝你的時間,我非常感謝。

在閱讀完其他問題之后,您的窗口似乎可能沒有調用dispose( )。 如果是,那將解釋您的問題的原因。

你需要越過窗戶關閉按鈕:

            //overriding the windowClosing() method will allow the user to click the close button
    addWindowListener(
            new WindowAdapter()
    {
        public void windowClosing(WindowEvent e)
        {
            System.exit(0);
        }
    });

通過這樣做,程序將關閉不僅變得不可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM