mainFrame().addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent evt)
{
retrieveItems();
closeAllConnections();
System.exit(0);
}
});
对于上面的代码,retrieveItems()
执行得很好,但是里面有一个后台任务doBackup()
,closeAllConnections()
它根本不执行。该程序似乎只是跳过了任务。这是closeAllConnections()
包含内容的简要视图;
public void closeAllConnections()
{
boolean shouldBackup = getBackupOnCloseStatus();
if(shouldBackup)
{
doBackUp();
}
dbManager.disconnectDB();
}
使用 Netbeans Step-Debugger 后,我注意到程序执行甚至doBackup()
在应用程序退出之前都没有进入方法。这很奇怪。对于可能导致这种行为的任何帮助,我将不胜感激。谢谢好心人!
如果这条额外的信息可能有助于找到解决方案,我正在使用 Swing 应用程序框架,所以任务doBackup()
如下所示......
@Action
public Task doBackUp()
{
return new DoBackUpTask(getApplication());
}
private class DoBackUpTask extends org.jdesktop.application.Task<Object, Void>
{
private boolean done = false;
DoBackUpTask(org.jdesktop.application.Application app)
{
super(app);
this.setMessage("Backing-up database...");
}
@Override
protected Object doInBackground()
{
File destDir = new File(appManager.getBackUpDir());
done = backUpDataBase(destDir);
return null;
}
@Override
protected void succeeded(Object result)
{
if(done)
{
setMessage("BackUp completed.");
}
}
}