Eclipse:如何在 Eclipse 视图启动之前执行任务

Eclipse: How to perform a task before eclipse view starts

我的插件中只有一个视图。在视图开始之前,我想确保我的服务器已经启动,因为视图将根据服务器启动。目前,我在 Display thread 中以 Display.getDefault().syncExec() 启动我的服务器,同时启动我的插件 - start(BundleContext context)

有时,我发现 bundleloader 和此线程之间存在死锁。 Bundleloader 正在等待我的插件启动,而我的插件启动正在等待服务器启动,因为 syncExec() 调用。

我怎样才能做到这一点?有什么方法可以在我的视图开始之前执行特定任务吗?

如果您没有使用 E4 并且您的视图扩展 org.eclipse.ui.part.ViewPart,则有一个 init()

void init(IViewSite site) throws PartInitException

createPartControl(Composite parent).

之前调用

也许这有帮助?

尽量避免Display.getDefault().syncExec();此调用可以阻止 UI - Eclipse 将在没有任何指示的情况下冻结。

相反,您应该启动后台线程/辅助作业。工作人员完成后(您的服务器已启动),您应该向视图发送信号。

视图应使用 "Starting server..." 初始化自身。当信号到达时,您可以更新 UI 以显示实际内容。这样,您就不必阻止,用户会明白为什么他们看不到任何东西 :-) 您还可以在无法启动服务器等时显示错误消息。