Eclipse:如何在eclipse视图开始之前执行任务
问题描述:
我的插件中只有一个视图。在视图开始之前,我想确保我的服务器已经启动,因为视图将根据服务器启动。目前,我启动我的服务器Display thread
为Display.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)
之前调用。
也许这有帮助吗?
答
尽量避免Display.getDefault().syncExec()
;这个调用可以阻止UI - Eclipse会冻结而没有任何指示为什么。
相反,你应该开始后台线程/工作的工作。工作完成后(您的服务器已启动),您应该向视图发送信号。
该视图应使用“正在启动服务器...”初始化自己。当信号到达时,您可以更新UI以显示实际内容。这样,您不必阻止,用户就会明白为什么他们什么都看不到:-)当您无法启动服务器时,您也可以显示错误消息等。
谢谢。这有帮助。 – Priyadarshini