在我的 Eclipse 插件中,我有一个TableViewer
显示一些数据的插件。这些数据是从远程 REST 服务中检索的。因此,检索所有项目需要几秒钟的时间。这就是为什么我想在检索到它们后立即将它们添加到TableViewer
's中。ContentProvider
我在一个单独的线程中执行我的 REST 查询:
Thread retrieveThread = new RetrieveThread();
retrieveThread.run();
在这个线程中,我将项目添加到我的TableViewer
:
MyView.instance.addItems(items);
和类中的相同方法MyView
:
public void addItems(List<Result> items) {
ModelProvider.INSTANCE.addItems(items);
resultLabel.setText(ModelProvider.INSTANCE.getItems().size() + " items");
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
viewer.refresh();
}
});
}
我预计此过程会将项目添加到我TableViewer
的然后刷新视图。但是现在发生的是我的 Eclipse 冻结并同时添加了所有这些项目。我怎样才能以更具响应性的方式做到这一点?