Eclipse RCP:Display.getDefault().asyncExec 等待超过 4000 毫秒才能执行
Eclipse RCP: Display.getDefault().asyncExec waits more than 4000ms to execute
我正在使用 TreeViewer
并创建作业来刷新添加了 4k - 5k 节点的 Treeview
。在 Refresh Job 中,我调用 Display.getDefault().asyncExec
来执行 getTreeViewer().refresh()
方法。但是,我遇到了 getTreeViewer().refresh()
必须等待 4000 毫秒或更长的时间才能到达 运行 的问题。这是在 Ubuntu 和 Windows 必须等待超过 30000 毫秒。
不知道为什么要等很久才能执行
asyncExec
尽快在 SWT 用户界面线程上运行。因此,如果它被延迟,则必须有其他东西在使用该线程。由于您有一棵大树,可能是 TreeViewer
构建树导致了延迟(除非您是 运行 在 UI 线程中花费很长时间的东西)。
对于大树,您可能需要考虑使用 SWT.VIRTUAL
样式创建树并使用 ILazyTreeContentProvider
内容提供程序。
我正在使用 TreeViewer
并创建作业来刷新添加了 4k - 5k 节点的 Treeview
。在 Refresh Job 中,我调用 Display.getDefault().asyncExec
来执行 getTreeViewer().refresh()
方法。但是,我遇到了 getTreeViewer().refresh()
必须等待 4000 毫秒或更长的时间才能到达 运行 的问题。这是在 Ubuntu 和 Windows 必须等待超过 30000 毫秒。
不知道为什么要等很久才能执行
asyncExec
尽快在 SWT 用户界面线程上运行。因此,如果它被延迟,则必须有其他东西在使用该线程。由于您有一棵大树,可能是 TreeViewer
构建树导致了延迟(除非您是 运行 在 UI 线程中花费很长时间的东西)。
对于大树,您可能需要考虑使用 SWT.VIRTUAL
样式创建树并使用 ILazyTreeContentProvider
内容提供程序。