Eclipse:如何在eclipse视图开始之前执行任务

问题描述:

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

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

我该如何做到这一点?在视图开始之前有什么方法可以执行特定任务吗?

如果你不使用E4和你的观点延伸org.eclipse.ui.part.ViewPart,有一个init()

void init(IViewSite site) throws PartInitException 

createPartControl(Composite parent)之前调用。

也许这有帮助吗?

+0

谢谢。这有帮助。 – Priyadarshini

尽量避免Display.getDefault().syncExec();这个调用可以阻止UI - Eclipse会冻结而没有任何指示为什么。

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

该视图应使用“正在启动服务器...”初始化自己。当信号到达时,您可以更新UI以显示实际内容。这样,您不必阻止,用户就会明白为什么他们什么都看不到:-)当您无法启动服务器时,您也可以显示错误消息等。