我们使用RCP 3.4。使用TreeViewer,有一个方便的函数叫做" expandAll()"它扩展了整棵树。但是当树中有许多项目时,UI会阻塞一段时间。我试图将它放入工作区作业,但后来我得到了错误Invalid thread access
。然后我尝试使用Displac.getDefaukt().asyncExec(...)
运行该方法,然后UI也阻止。
有没有办法将expand-All方法放入可以放入后台并取消的作业中,就像正常的工作区Job?
答案 0 :(得分:1)
对于普通树,您可以做的就是在树扩展时显示忙碌指示符,可能使用BusyIndicator
。
您还可以查看使用可以在后台获取树节点的DeferredTreeContentManager
。这需要您的树节点实现或适应IDeferredWorkbenchAdapter
,fetchDeferredChildren
具有用于后台工作的{{1}}方法。