2011-10-21 94 views
2

我有一個簡單的viewPart提供一些文本字段來輸入硒測試的參數。填寫完這些字段後,用戶可以開始測試。需要30-45分鐘才能運行。我希望我的圖形用戶界面在測試期間保持活躍狀態​​,讓用戶有機會做其他事情。我需要一個進度監視器。Eclipse RCP:Display.getDefault()。asyncExec仍然阻止我的GUI

我試圖把硒測試放在一個包含Display.getDefault()。asyncExec的作業中來運行它。但是,在幾秒鐘後,我的GUI會凍結busyindicator。硒不更新任何其他視圖,但進度監視器。

是否有另一種方法來確保工作不會阻止我的GUI?在(a)syncExec執行

最佳, 了Mirco

回答

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(); 
相關問題