我刚刚开始使用 Eclipse RCP。
我使用 TableViewer 和 WritableList 创建了 Eclipse RCP View 以从其他线程获取数据。
但我看不到任何变化。我只需要显示其他线程正在管理的 List 的内容。
public class View extends ViewPart {
private TableViewer viewer;
private WritableList input;
我也可以得到错误,
org.eclipse.core.runtime.AssertionFailedException: assertion failed: Getter called outside realm of observable org.eclipse.core.databinding.observable.list.WritableList
我知道什么是 UI 线程。我只是不知道怎么写。请帮忙举个例子。
更新。没有解决,因为时间不够,缺少好的和重点突出的教程。
最佳答案
我的代码也收到了此错误消息。
数据绑定(bind) observables (WritableList, WritableValue...) 继承自 ChangeManager
,它提供 ChangeManager#getRealm
该领域有Realm#exec
.在提供给 exec
的可运行文件内,操作在正确的线程中运行。
此行导致错误(Getter 称为可观察的外部领域):
WritableValue value = getEditor().getWritableValue();
System.out.println(((RcpEditorModel) value.getValue()).getNumber());
这防止了异常:
WritableValue value = getEditor().getWritableValue();
value.getRealm().exec(() -> System.out.println(((RcpEditorModel) value.getValue()).getNumber()));
WritableList
也是如此。因为它也继承自 ChangeManager
.
关于multithreading - 如何将 Eclipse RCP TableView 绑定(bind)到其他线程数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5308898/