我的插件中只有一个视图。在视图启动之前,我想确保启动我的服务器,因为视图将根据服务器启动。当前,在启动插件-start(BundleContext context)
时,我在Display thread
中以CC_1启动服务器。
有时,我看到bundleloader
和该线程之间的僵局。Bundleloader
正在等待我的插件启动,而我的插件启动是因为syncExec()
调用。
我该如何实现?有什么方法可以在我的视图开始之前执行特定任务?
如果您不使用E4,并且视图扩展了org.eclipse.ui.part.ViewPart
,则有一个init()
void init(IViewSite site) throws PartInitException
在createPartControl(Composite parent)
之前称为
也许会有所帮助?
尝试避免Display.getDefault().syncExec()
;此呼叫可以阻止UI-蚀会冻结,而没有任何迹象。
相反,您应该启动一个背景线程/工人作业。工人完成后(您的服务器已启动),您应该向视图发送信号。
视图应使用"启动服务器..."初始化自身。信号到达时,您可以更新UI以显示实际内容。这样,您不必阻止,用户会看到为什么他们看不到任何东西:-)当您无法启动服务器等时,您也可以显示错误消息。