0

プラグインの開発に使用する必要最小限のアプリを作成しようとしています。作業台はいらない。

title1 の下にダイアログが表示されますが、title2 は表示されません。

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

1 に答える 1

3

ディスプレイには、同期、非同期、または特定の時間 (Display.timerExec) で実行する必要があるランナブル用のさまざまなキューがあります。Display.readAndDispatch がすべてのイベントをディスパッチすると、最初に同期キュー内のランナブルが実行され、次に非同期キューが空になり、その後、予定されている timerExec ランナブルが実行されます。

Display.syncExec と Display.asyncExec の唯一の違いは、syncExec メソッドが Display スレッドによってランナブルが実行されるのを待機することです。Display.asyncExec は単にランナブルをキューに入れ、続行します。

したがって、「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();
}
于 2009-05-29T09:40:58.057 に答える