0

我在 RCP 应用程序中打开多个编辑器时遇到问题。据我所知,只有一个UI-Thread绘制 GUI。

在我的用例中,我必须同时打开大约 50 个编辑器,这需要一些时间,因为在打开所有编辑器之前会阻塞 UI 线程。在我的编辑器中加载数据是通过 Jobs 完成的。

我尝试搜索是否有某种机制可以使开口平行化以不阻塞 UI 线程,但没有找到任何东西。有没有可能做到这一点?如果每个编辑器都在自己的 UI 线程中打开/绘制,这将非常有帮助,以便用户已经可以使用打开的编辑器。

4

2 回答 2

0

我想您已经回答了您的问题 - Eclipse-RCP 应用程序中只有一个 UI 线程。您可能想重新考虑您的应用程序设计并尽可能使用延迟加载机制(组合框、查看器等),或者尝试找到一些数据加载需要更多时间并且可以优化的地方,但编辑器的可视化初始化仍然需要一些时间时间,尤其是当您同时打开多个编辑器时。

于 2012-09-20T11:50:44.530 回答
0

您可以做的一件事是org.eclipse.ui.ide.IDE.openEditors(IWorkbenchPage, IFile[])在 IDE 产品中使用或在 RCP 产品中使用 'org.eclipse.ui.IWorkbenchPage.openEditors(IEditorInput[], String[], int)' 来推迟打开编辑器的成本。从 Eclipse 3.5 开始,这两种方法都可用。

它根据要求为编辑器创建所有选项卡,但它只实现最终处于活动状态的编辑器。它提供了与用户关闭并重新打开 Eclipse 并打开许多编辑器(仅实现可见编辑器)相同的行为。

有关更多信息,请参阅 IWorkbenchPage 的 javadoc, http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fui%2FIWorkbenchPage 。 html

私服

于 2012-09-24T15:50:03.770 回答