我在修改後的eclipse(Indigo)中將org.eclipse.swt.browser.Browser嵌入到視圖中,用作表單編輯器組件的預覽窗格。在表單模型更改或元素選擇更改時,代碼通過vaadin 6呈現表單並將其顯示在瀏覽器組件中。SWT瀏覽器組件塊SWT UI線程
現在,這在大多數情況下就像一個魅力。但對於一些高度複雜的表單,由vaadin生成的HTML + JS會在瀏覽器上產生很大的壓力,使其在幾秒鐘內無響應。這本身並不是悲劇(1),但只要SWT Browser組件忙於渲染那些東西,整個eclipse UI線程就會被阻塞。
重現此操作的一種簡單方法是創建一個阻止JavaScript函數(例如參見https://gist.github.com/creinig/5150747)的HTML頁面並將其顯示在SWT瀏覽器中。只要該JS函數正在運行,整個SWT應用程序就不會對任何事情做出響應。
唯一的信息,我已經在這個問題上找到的
- 一個SO question(無分辨率)和
- 一個question on EclipseZone(未回答)。
並不實用:(
的瀏覽器組件的API docs似乎並沒有提供關於其是否呈現由UI線程定期觸發任何見解,或者本身引發的東西,塊的UI。
有沒有辦法去耦從SWT UI線程?還是別的什麼可以做,以保護日食UI從瀏覽器掛東西瀏覽器組件的渲染?
(1):我們需要這種複雜度級別的表單,我們已經在優化渲染性能,並且轉向vaadin7很可能也會加快速度。但是問題一定會持續下去,只要降低嚴重程度。