PlatformUI.createDisplay() 是否确保通过 UI 线程创建 Display 对象?

Does PlatformUI.createDisplay() ensure creation of Display object through UI thread?

如何确保仅通过 UI 线程创建 Display 对象?

PlatformUI.createDisplay() 是否确保通过 UI 线程创建 Display 对象?

如果尚未创建显示,

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。

On Mac OS X 还需要 -XstartOnFirstThread 参数才能获得正确的 UI 线程。