2011-10-21 10 views
2

私はセレンテストのパラメータを入力するためのテキストフィールドを提供する単純なviewPartを持っています。これらのフィールドに記入した後、ユーザーはテストを開始することができます。実行には30〜45分かかる。このテスト中に私のGUIが生きていて、ユーザーに他のことをやる機会が与えられたいのです。進歩モニターが必要です。Eclipse RCP:Display.getDefault()。asyncExecはまだ私のGUIをブロックしています

私はDisplay.getDefault()。asyncExecを含むジョブにセレンテストを実行して実行しようとしました。しかし、私のGUIは、ビジーインディケータを与えてから数秒後にフリーズします。セレンは他のビューではなく進捗モニターを更新します。

ジョブが自分のGUIをブロックしないようにする別の方法はありますか? (a)syncExecで実行

ベスト

、 ミルコ

答えて

7

すべてが表示スレッドを使用して、それが戻るまで、したがって、あなたのUIをブロックしています。 Eclipse Jobsを使用することをお勧めします。これは、ワークベンチがすでに提供している進行状況インジケータを使用します。

0

あなたのコードを、UIと他のビジネスを実行するコードを更新するコードに分割することをお勧めします。すべてを別のスレッドで実行し、UIにアクションを取得または設定する必要がある場合は、 "Display.getDefault()。asyncExec"を使用します。

Thread thread = new Thread("Testing") { 

    // some shared members 

    public void run() { 

     someBusiness(); 

     // or use syncExec if you need your thread 
     // to wait for the action to finish 
     Display.getDefault().asyncExec(new Runnable() { 

      @Override 
      public void run() { 
       // UI stuff here 
       // data retrieval 
       // values setting 
       // actions trigging 
       // but no business 
      } 

     }); 
     someBusiness(); 

}; 
thread.start(); 
関連する問題