org.eclipse.swt.SWTException: "Widget entsorgt wird" aus der Tabelle aktualisieren

Die app ist ein Eclipse-3.6-basierte RCP (so jface version 3.5.2) unter windows 7.

Habe ich eine benutzerdefinierte View-Klasse, die enthält eine TableViewer und fordert refresh() auf Sie. Manchmal, aber nicht sehr oft Ergebnisse im stack-trace unten. Es ist aus aufgerufen, in dem UI-thread. Ich vermutete war das problem mit anderen code, ändert das backing-Liste auf den Tisch, aber, dass code, der dies tut, wird auch entweder ein syncExec oder die Methode asyncExec also ich verstehe nicht, wie es sein könnte, ein Synchronisations-Problem zwischen der änderung der Tabelle Artikel und die Aktualisierung der Zuschauer.

Irgendwelche Ideen was ich tun kann, um dies zu verhindern?

!ENTRY org.eclipse.jface 4 2 2010-10-20 09:22:06.140 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface". !STACK 0 org.eclipse.swt.SWTException: Widget is disposed 
at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) 
at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) 
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:336) 
at org.eclipse.swt.widgets.Widget.getData(Widget.java:521) 
at org.eclipse.jface.viewers.AbstractTableViewer.setSelectionToWidget(AbstractTableViewer.java:921) 
at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1711) 
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1399) 
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1353) 
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1455) 
at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:537) 
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1414)
... 
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:179)
  • Meinst du mit "ändert sich die backing-Liste, um die Tabelle" einen direkten Zugriff auf die zugrunde liegenden SWT-Table-Komponente, oder sind auch Sie arbeiten auf den Betrachter? Ein snippet wäre hilfreich
  • Seidel Nein, ich meine, es ist ein ContentProvider (Klasse ContentProvider erstreckt AbstractContentProvider implementiert IStructuredContentProvider, IItemListViewer), die von der TableViewer die kann sich ändern, die Elemente, die es enthält zur Laufzeit.
InformationsquelleAutor Alb | 2011-02-28
Schreibe einen Kommentar