3

当我关闭主窗口时,我收到一个错误,因为它已被处理。我试图“过滤掉”(使用条件),但我无法让它工作。

if(!Display.getDefault().isDisposed()){
   Display.getDefault().syncExec(new Runnable() {

      @Override
      public void run() {
         View.tableViewer.refresh();
         setViewInfo();
      }
    });
}

错误:

线程“Thread-3”中的异常 org.eclipse.swt.SWTException:无法在 org.eclipse.swt.SWT.error(SWT.java:4361)处执行可运行(org.eclipse.swt.SWTException:小部件已处置)在 org.eclipse.swt.SWT.error(SWT.java:4276) 在 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) 在 com.chriss.udp.Message.WRITE(Message.java:166) 在 com.chriss.udp.threads。 ThreadConnect.run(ThreadConnect.java:55) at java.lang.Thread.run(Unknown Source) Caused by: org.eclipse.swt.SWTException: Widget is dispose

4

1 回答 1

3

您可以询问是否处理了Widget

boolean isDisposed() 

如果小部件已被释放,则返回 true,否则返回 false。

您不必检查显示,因为只要应用程序正在运行,它就不会被释放。您必须检查可运行文件中的表或 this.isDisposed()。

请发布完整的堆栈跟踪。我认为问题出在可运行文件内部。

于 2013-02-03T11:29:19.910 回答