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) 原因: org.eclipse.swt.SWTException: ウィジェットが破棄されました

4

1 に答える 1

3

Widgetが破棄されているかどうかを確認できます。

boolean isDisposed() 

ウィジェットが破棄された場合は true を返し、そうでない場合は false を返します。

アプリケーションが実行されている限り、アプリケーションは破棄されないため、表示を確認する必要はありません。ランナブル内のテーブルまたは this.isDisposed() を確認する必要があります。

完全なスタック トレースを投稿してください。問題はランナブル内にあると思います。

于 2013-02-03T11:29:19.910 に答える