我正在尝试创建一个用于开发插件的裸骨应用程序。我不需要工作台。
将显示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;
}
}
答案 0 :(得分:3)
显示器有不同的队列,可以运行同步,异步或特定时间(Display.timerExec)的可运行程序。当Display.readAndDispatch调度了所有事件时,首先执行sync-queue中的runnables,然后清空async-queue,然后执行到期的timerExec runnables。
Display.syncExec和Display.asyncExec之间的唯一区别是syncExec方法等待Display线程执行runnable。 Display.asyncExec只是将runnable排队并继续。
因此,如果“title2”永远不会出现,我认为您的应用程序不会运行Display循环:
Display display = new Display(); // this thread should be the only one that creates a display instance
while (someCondition) {
if (!display.readAndDispatch())
display.sleep();
}