【问题标题】:Does PlatformUI.createDisplay() ensure creation of Display object through UI thread?PlatformUI.createDisplay() 是否确保通过 UI 线程创建 Display 对象?
【发布时间】:2015-01-29 07:06:18
【问题描述】:

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

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

【问题讨论】:

  • 您是在询问IApplication 类中的代码吗?

标签: java user-interface thread-safety swt eclipse-rcp


【解决方案1】:

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 线程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2016-12-20
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多