调用 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) 调用放在线程之外,但它超出了范围,没有任何其他线程或流在运行。
在连接 ShutDown 事件以确保所有内容都关闭时,我是否需要采取额外的步骤?
感谢您抽出宝贵的时间,我非常感激。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
阅读您的其他问题后,您似乎可能没有调用 dispose() 在您的窗口上。如果属实,那就可以解释问题的原因。
After reading your other question, it seems like your are probably not calling dispose() on your window(s). If true, that would explain the cause of your problem.
您需要覆盖窗口关闭按钮:
通过这样做,程序将关闭而不仅仅是变得不可见。
You need to over ride the windows close button:
By doing this the program will close not just become invisible.