2010-08-04 4 views
1

SwingWorker 두 개를 실행해야합니다. 그 중 하나는 다른 하나가 완료된 후에 만 ​​실행될 수 있습니다. 이런 식으로 나갈 수 있을까요?다른 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에서 수행하고 결과 배열을 반환하는 것이 더 나을 것입니다.

관련 문제