Eclipse rcp asyncExec事件何时开始?

Eclipse rcp asyncExec事件何时开始?,eclipse-rcp,Eclipse Rcp,我正在尝试创建一个用于开发插件的裸体应用程序。我不需要工作台 下面将显示标题1对话框,但标题2从不显示 为了显示第二个,需要做什么 public class BareBonesApp extends AbstractApplication { public Object start(IApplicationContext context) throws Exception { Display display = PlatformUI.createDisplay()

我正在尝试创建一个用于开发插件的裸体应用程序。我不需要工作台

下面将显示标题1对话框,但标题2从不显示

为了显示第二个,需要做什么

public class BareBonesApp extends AbstractApplication
{
    public Object start(IApplicationContext context) throws Exception
    {
        Display display = PlatformUI.createDisplay();

        MessageDialog.openWarning(null, "title1", "message1");

        display.asyncExec(new Runnable()
        {
            public void run()
            {
                MessageDialog.openWarning(null, "title2", "message2");
            }
        });

        return null;
    }
}

Display为应在指定时间(Display.timerExec)内运行sync、async或的可运行程序提供了不同的队列。当Display.readAndDispatch已调度所有事件时,首先执行同步队列中的可运行项,然后清空异步队列,然后执行到期的timerExec可运行项

Display.syncExec和Display.asynceec之间的唯一区别是syncExec方法等待Display线程执行runnable。Display.asyncExec只是将runnable排队,然后继续

因此,如果“title2”从未出现,我估计您的应用程序不会运行显示循环:

Display display = new Display(); // this thread should be the only one that creates a display instance
while (someCondition) {
  if (!display.readAndDispatch())
    display.sleep();
}

Display为应在指定时间(Display.timerExec)内运行sync、async或的可运行程序提供了不同的队列。当Display.readAndDispatch已调度所有事件时,首先执行同步队列中的可运行项,然后清空异步队列,然后执行到期的timerExec可运行项

Display.syncExec和Display.asynceec之间的唯一区别是syncExec方法等待Display线程执行runnable。Display.asyncExec只是将runnable排队,然后继续

因此,如果“title2”从未出现,我估计您的应用程序不会运行显示循环:

Display display = new Display(); // this thread should be the only one that creates a display instance
while (someCondition) {
  if (!display.readAndDispatch())
    display.sleep();
}