【发布时间】:2013-08-23 18:43:59
【问题描述】:
该应用程序是在 Windows 7 上运行的基于 Eclipse 3.6 的 RCP(即 jface 版本 3.5.2)。
我有一个自定义 View 类,其中包含 TableViewer 并在其上调用 refresh()。有时,但不经常会导致下面的堆栈跟踪。它是从 UI 线程中调用的。我怀疑问题出在将支持列表更改为表的其他代码上,但是任何执行此操作的代码也在 syncExec 或 asyncExec 方法中运行,所以我不明白它如何可能是更改之间的同步问题表项的数量和查看器的刷新。
有什么想法可以防止这种情况发生吗?
!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)
【问题讨论】:
-
您的意思是“将支持列表更改为表”是对底层 SWT-Table 组件的直接访问,还是它们也在查看器上工作?一个 sn-p 会很有帮助
-
标签: java swt eclipse-rcp jface