2010-08-04 74 views
1

我需要運行兩個SwingWorker s。其中一個只能在另一個完成後才能運行。我可以像這樣運行它們嗎?我可以在另一箇中運行一個SwingWorker嗎?

class TestWorker { 
    private FirstWorker worker1; 
    private SecondWorker worker2; 

    public TestWorker() { 
     worker1 = new FirstWorker() { 
      @Override 
      protected void done() { 
       try { 
        result1 = get(); 
       } catch (Exception) { 
        // exception handling 
       } 

       worker2 = new SecondWorker() { 
        @Override 
        protected void done() { 
         try { 
          result2 = get(); 
         } catch (Exception) { 
          // exception handling 
         } 
        } 
       } 

       worker2.execute(); 
      } 
     } 

     worker1.execute(); 
    } 
} 

我該如何取消它們?喜歡這個?

private cancel() { 
    if (worker2 != null) work2.cancel(); 
    if (worker1 != null) work1.cancel(); 
} 

非常感謝!

回答

1

你可以這樣做,它會工作。但是,除非您的外部done中還有其他操作沒有顯示,否則最好使用在doInBackground中執行兩項操作的操作並返回結果數組。