当我关闭主窗口时,我收到错误,因为它被丢弃了。我试图“过滤掉”(使用条件),但我无法让它起作用。
if(!Display.getDefault().isDisposed()){
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
View.tableViewer.refresh();
setViewInfo();
}
});
}
错误:
线程“Thread-3”中的异常org.eclipse.swt.SWTException:失败 execute runnable(org.eclipse.swt.SWTException:Widget被释放) 在org.eclipse.swt.SWT.error(SWT.java:4361)at org.eclipse.swt.SWT.error(SWT.java:4276)at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:196) 在 org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150) 在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 at java.lang.Thread.run(未知来源)引起: org.eclipse.swt.SWTException:小部件被处理
答案 0 :(得分:2)
您可以询问是否处置Widget。
boolean isDisposed()
如果窗口小部件已被释放,则返回true,否则返回false。
您不必检查显示,因为只要应用程序正在运行,它就不会被丢弃。 你必须检查runnable中的表或this.isDisposed()。
请发布完整的堆栈跟踪。我把问题解决了在runnable中。