我的JFrame中有一个Web浏览器,我认为在退出应用程序时无法将其丢弃。
这是我的代码,试图做到这一点:
Platform.runLater(new Runnable() {
@Override
public void run() {
webBrowserEngine.getLoadWorker().cancel();
Platform.runLater(new Runnable() {
@Override
public void run() {
Platform.exit();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
getMainFrame().dispose(); // Is set to dispose on close
// SwingUtilities.invokeLater(new Runnable() {
// @Override
// public void run() {
// System.exit(0);
// }
// });
}
});
}
});
}
});
窗口关闭,但是java进程停留,该行始终返回false:
webBrowserEngine.getLoadWorker().cancel();
最佳答案
Platform.exit();
强制FXApplicationThread终止。与之相关的一切最终都将最终确定。您可以通过扩展和覆盖WebEngine类以在finalize()触发器上处理不同的方式进行测试。
此外,在WebEngine自身中,还存在与URL处理例程相关的自处置程序的实现。
另外,WebEngine处理一些URLLoader以进行资源处理。由于它们位于DLL中,因此有点奇怪,因为它们太原生了。
为了解决这个问题,我引入了一堆需要逻辑解决方法的MemoryAccessViolation异常。