我的SWT树出了问题。它包含许多叶子,这使得扩展项目非常耗时。有时我甚至需要扩展所有项目。有没有办法异步扩展它?我试图在显示中使用asyncExec()
将expandAll()
置于run()
方法中,但它没有帮助。它并没有解决我想只扩展一个项目的第一个问题。有任何想法吗?
附加节点:项目的缓慢扩展仅在我第一次展开时发生。之后所有相同项目的扩展(在折叠之后)都很快。
答案 0 :(得分:2)
我通过将内容提供程序更改为ILazyTreeContentProvider
来解决大树的性能问题。如果您必须立即展开整个树,这将无济于事。
另一种选择:仔细查看您的内容和标签提供商。也许他们的操作太昂贵,如果你缓存或预先计算树的一些信息,你可以加快速度。例如,如果您有一个正常(非惰性)内容提供程序从数据库(逐个)加载项目,那么展开树将永远 ...
答案 1 :(得分:0)
您是否在UI线程中加载模型项?理想情况下,您应该在非UI线程中加载模型项,然后使用UI线程中的项更新树。