2010-08-04 63 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中执行两项操作的操作并返回结果数组。

相关问题