1

UI を更新するために、ジョブ内から RAP 2.3 の現在の表示オブジェクトを取得する必要があります。それを行うための提案された方法は何ですか?

4

1 に答える 1

1

Threads in RAPの記事では、スレッドとセッションが RAP でどのように相互に関係しているかについて詳しく説明しています。

ジョブからディスプレイにアクセスするには、ジョブが割り当てられているディスプレイを知る必要があります。したがって、Displya を Job に渡す必要があります。ジョブが UI スレッドからスケジュールされている場合、典型的なコードは次のようになります。

  static class DisplayJob extends Job {
    private final Display display;

    private DisplayJob( Display display ) {
      super( "Job with UI Access" );
      this.display = display;
    }

    @Override
    protected IStatus run( IProgressMonitor monitor ) {
      display.asyncExec( new Runnable() {
        @Override
        public void run() {
        }
      } );
      return Status.OK_STATUS;
    }
  }


  Button button = new Button( ...
  button.addListener( SWT.Selection, new Listener() {
    @Override
    public void handleEvent( Event event ) {
      new DisplayJob( event.display ).schedule();;
    }
} );

run()に指定されたメソッドでウィジェットにアクセスする前に、ウィジェットが破棄されていないかどうかを確認することを忘れないでくださいasyncExec()- またはヘルパーを使用してください。

スレッド/セッションの関係は RAP に固有のものではなく、セッションの概念を持つすべてのマルチユーザー環境に適用されることに注意してください。

于 2015-02-10T09:17:59.753 に答える