org.eclipse.swt.SWTException: “Widget est disposé” à partir de la table d'actualisation

L'application est un Eclipse 3.6 base de RCP (donc jface version 3.5.2) en cours d'exécution sur windows 7.

J'ai un Affichage personnalisé de la classe qui contient une TableViewer et les appels refresh() sur elle. Parfois, mais pas très souvent la trace de la pile ci-dessous. Il est appelé à partir à l'intérieur de la thread de l'INTERFACE utilisateur. Je soupçonne que le problème était avec un autre code qui modifie la sauvegarde de liste de la table, mais que le code qui fait cela est également exécuter dans une syncExec ou asyncExec méthode donc je ne comprends pas comment il pourrait être un problème de synchronisation entre l'évolution du tableau des éléments et de l'actualisation de la visionneuse.

Les idées de ce que je peux faire pour éviter que cela se reproduise?

!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)
Voulez-vous dire par "les changements de la sauvegarde de liste de la table" un accès direct à la sous-jacentes SWT-composant de Tableau, ou sont-ils aussi travailler sur le spectateur? Un extrait de code serait utile
Seidel Non, je veux dire il y a un ContentProvider (classe ContentProvider s'étend AbstractContentProvider implémente IStructuredContentProvider, IItemListViewer) utilisé par le TableViewer qui peut modifier les éléments qu'il contient lors de l'exécution.

OriginalL'auteur Alb | 2011-02-28