在调用System.exit(0)之后,应用程序继续运行- 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)调用放在线程之外,但是它超出了作用域,没有任何其他线程或流在运行。

是否有一个额外的步骤,我需要采取挂钩到关闭事件,以确保一切关闭?

谢谢你的时间,我非常感激。

阅读您的其他问题后,似乎您可能不会在您的窗口上调用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);
        }
    });

通过这样做,程序将关闭而不仅仅是变得不可见。

相关内容

  • 没有找到相关文章

最新更新