当我关闭主窗口时,我会得到一个错误,因为它被释放了。我试着“过滤掉”(使用条件),但我无法让它工作。
if(!Display.getDefault().isDisposed()){
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
View.tableViewer.refresh();
setViewInfo();
}
});
}
错误:
线程" thread -3“org.eclipse.swt.SWTException中的异常:未能执行runnable (org.eclipse.swt.SWTException:小部件已被释放),在org.eclipse.swt.SWT.error(SWT.java:4361) at org.eclipse.swt.SWT.error(SWT.java:4276),at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4687) at com.chriss.udp.Message.WRITE(Message.java:166) at com.chriss.udp.threads.ThreadConnect.run(ThreadConnect.java:55) at java.lang.Thread.run(未知源)由: org.eclipse.swt.SWTException:小部件释放
发布于 2013-02-03 03:29:19
您可以询问小部件是否已被释放。
boolean isDisposed()
如果小部件已被释放,则返回true,否则返回false。
您不必检查显示,因为只要应用程序正在运行,它就不会被释放。您必须检查runnable中的表或this.isDisposed()。
请张贴完整的堆栈跟踪。我认为问题出在可运行的内部。
https://stackoverflow.com/questions/14671954
复制相似问题