0

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

在 title1 对话框下方会显示,但 title2 不会。

需要做什么才能显示第二个?

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;
    }
}
4

1 回答 1

3

Display 对应该运行同步、异步或在特定时间 (Display.timerExec) 的可运行程序有不同的队列。当 Display.readAndDispatch 已调度所有事件时,首先执行同步队列中的可运行对象,然后清空异步队列,然后执行到期的 timerExec 可运行对象。

Display.syncExec 和 Display.asyncExec 之间的唯一区别是 syncExec 方法等待 Display 线程执行 runnable。Display.asyncExec 只是将可运行对象排队并继续。

因此,如果“title2”从未出现,我认为您的应用程序没有运行显示循环:

Display display = new Display(); // this thread should be the only one that creates a display instance
while (someCondition) {
  if (!display.readAndDispatch())
    display.sleep();
}
于 2009-05-29T09:40:58.057 回答