【发布时间】:2015-01-29 07:06:18
【问题描述】:
我应该如何确保仅通过 UI 线程创建 Display 对象?
PlatformUI.createDisplay() 是否确保通过 UI 线程创建 Display 对象?
【问题讨论】:
-
您是在询问
IApplication类中的代码吗?
标签: java user-interface thread-safety swt eclipse-rcp
我应该如何确保仅通过 UI 线程创建 Display 对象?
PlatformUI.createDisplay() 是否确保通过 UI 线程创建 Display 对象?
【问题讨论】:
IApplication 类中的代码吗?
标签: java user-interface thread-safety swt eclipse-rcp
PlatformUI.createDisplay 基本上只是在尚未创建显示的情况下执行new Display()。它旨在像这样在IApplication 中使用:
public class Application implements IApplication
{
@Override
public Object start(final IApplicationContext context)
{
final Display display = PlatformUI.createDisplay();
try
{
final int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART)
return IApplication.EXIT_RESTART;
return IApplication.EXIT_OK;
}
finally
{
display.dispose();
}
}
这将创建显示并使用当前线程作为用户界面线程运行 RCP。
在 Mac OS X 上,还需要 -XstartOnFirstThread 参数才能获得正确的 UI 线程。
【讨论】: