[英]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.