2015-05-04 88 views
1

我的插件中只有一個視圖。在視圖開始之前,我想確保我的服務器已經啓動,因爲視圖將根據服務器啓動。目前,我啓動我的服務器Display threadDisplay.getDefault().syncExec(),同時啓動我的插件 - start(BundleContext context)Eclipse:如何在eclipse視圖開始之前執行任務

有時,我看到bundleloader和此線程之間出現死鎖。 Bundleloader正在等待我的插件啓動,而我的插件啓動正在等待服務器啓動,因爲調用了syncExec()

我該如何做到這一點?在視圖開始之前有什麼方法可以執行特定任務嗎?

回答

1

如果你不使用E4和你的觀點延伸org.eclipse.ui.part.ViewPart,有一個init()

void init(IViewSite site) throws PartInitException 

createPartControl(Composite parent)之前調用。

也許這有幫助嗎?

+0

謝謝。這有幫助。 – Priyadarshini

0

儘量避免Display.getDefault().syncExec();這個調用可以阻止UI - Eclipse會凍結而沒有任何指示爲什麼。

相反,你應該開始後臺線程/工作的工作。工作完成後(您的服務器已啓動),您應該向視圖發送信號。

該視圖應使用「正在啓動服務器...」初始化自己。當信號到達時,您可以更新UI以顯示實際內容。這樣,您不必阻止,用戶就會明白爲什麼他們什麼都看不到:-)當您無法啓動服務器時,您也可以顯示錯誤消息等。

相關問題