今天调试程序发现了一个有意思的问题,调试到:
frame.dispose();
发现卡死了,不往下走了。再仔细研究发现不仅dispose会卡死,其它任何操作都会卡死(例如#setVisable()
)。
后来想了很久,我觉得问题可能是这样的。我是从一个ShutdownHook中调用的这个代码,而这个ShutdownHook又是从System.exit()
中触发的,应该是Swing也注册了类似的钩子,当调用System.exit()
时就退出了界面消息循环,导致任何针对界面的操作都会卡死。
解决方法就是直接删除不管即可。
Q.E.D.
Comments | 0 条评论