private void registerShutdownHook() { ShutDownTracker .getInstance(); // Necessary to avoid creating an instance while already shutting down. ShutDownTracker.getInstance() .registerShutdownTask( new Runnable() { public void run() { if (isDisposed() || isDisposeInProgress()) { return; } try { SwingUtilities.invokeAndWait( new Runnable() { public void run() { ApplicationManagerEx.setApplication(ApplicationImpl.this); try { saveAll(); } finally { disposeSelf(); } } }); } catch (InterruptedException e) { LOG.error(e); } catch (InvocationTargetException e) { LOG.error(e); } } }); }
private void registerShutdownHook() { ShutDownTracker .getInstance(); // Necessary to avoid creating an instance while already shutting down. ShutDownTracker.getInstance() .registerShutdownTask( new Runnable() { public void run() { if (isDisposed() || isDisposeInProgress()) { return; } ShutDownTracker.invokeAndWait( isUnitTestMode(), new Runnable() { public void run() { if (ApplicationManager.getApplication() != ApplicationImpl.this) return; try { myDisposeInProgress = true; saveAll(); } finally { disposeSelf(); } } }); } }); }
public void dispose() { fireApplicationExiting(); ShutDownTracker.getInstance().ensureStopperThreadsFinished(); disposeComponents(); ourThreadExecutorsService.shutdownNow(); myComponentStore = null; super.dispose(); Disposer.dispose(myLastDisposable); // dispose it last }