Browser SWT浏览器组件阻止SWT UI线程
我将org.eclipse.swt.browser.browser嵌入到修改后的eclipse(Indigo)中的视图中,用作表单编辑器组件的预览窗格。在表单模型更改或元素选择更改时,代码通过vaadin 6渲染表单,并将其显示在浏览器组件中 现在,在大多数情况下,这就像一个符咒。但是对于一些高度复杂的表单,由vaadin生成的HTML+JS会给浏览器带来很大的压力,导致浏览器在几秒钟内没有响应。这本身并不悲惨(1),但只要SWT浏览器组件忙于呈现这些内容,整个EclipseUI线程就会被阻塞 重现这种情况的一种简单方法是创建一个HTML页面,该页面在javascript函数中阻塞(参见示例),并在SWT浏览器中显示它。只要JS函数还在运行,整个SWT应用程序就不会响应任何东西 我找到的关于这个问题的唯一信息是Browser SWT浏览器组件阻止SWT UI线程,browser,swt,block,vaadin,Browser,Swt,Block,Vaadin,我将org.eclipse.swt.browser.browser嵌入到修改后的eclipse(Indigo)中的视图中,用作表单编辑器组件的预览窗格。在表单模型更改或元素选择更改时,代码通过vaadin 6渲染表单,并将其显示在浏览器组件中 现在,在大多数情况下,这就像一个符咒。但是对于一些高度复杂的表单,由vaadin生成的HTML+JS会给浏览器带来很大的压力,导致浏览器在几秒钟内没有响应。这本身并不悲惨(1),但只要SWT浏览器组件忙于呈现这些内容,整个EclipseUI线程就会被阻塞
- 一(无决议)和
- 一个(没有回答)
(1) :我们需要这种复杂程度的形式,我们已经在优化渲染性能,切换到vaadin7很可能也会加快速度。但问题肯定会持续,如果只是严重程度降低。不是真正的解决方案,而是一种适合我的解决方法(TM): 如上所述,从SWT启动系统的默认浏览器非常容易。因此,我将向包含浏览器控件的视图添加一个选项,该选项将通过禁用浏览器控件并打开系统浏览器来“分离”视图 如果链接页面从网上掉下来,要点如下:
org.eclipse.swt.program.Program.launch("http://my.funny.url/");
启动为HTTP URL注册的应用程序。换句话说:系统默认浏览器。
幸福随之而来:)