2012-07-11 4 views
0

많은 데이터를 가져오고 각 가져 오기에서 다양한 계산을 수행하는 데 사용되는 .NET Windows 양식 응용 프로그램을 작성하고 있습니다. 이를 위해 저는 한 명의 "주요"근로자와 여러 명의 "아동"근로자를 만들었습니다.BackgroundWorker - 작업이 완료된 후 컨트롤은 어디로 이동합니까?

가져 오기 작업은 모두 MySql 데이터베이스에 나열되어 있으며 작업이 존재하는지 여부를 확인하는 기능을 설정했습니다.

내가 알아야 할 것은 자식 작업자가 작업을 마친 후 제어가 전달되는 곳입니까? 그들이 주 근로자에게 전화를 걸어 다시 운영하여 아동 근로자에게 일자리를 할당해야합니까?

주 부하 작업자가 양식로드 이벤트를 호출합니다. 따라서 주 작업자를 처음으로 실행하고 하위 레벨에서 작업을 시작하면 주 작업자가 제어를 다시 폼로드로 전달합니까?

가져 오기 작업마다 비용이 많이 들기 때문에 테스트를 실행할 수 없습니다 (API 사용/히트 용). 그래서 테스트를 실행하기 전에 가능한 한 많이 앱을 작성하고 싶습니다.

+0

그리고 당신은 테스트를위한 수입에 대한 몇 가지 더미 라우팅을 쓸 수 없습니다? – Paparazzi

+0

안녕 Blam. 할 수는 있지만, 각 어린이 작업자는 MySql, 테이블 잠금 및 많은 저장 프로 시저에 연결하여 작업이 완료되었다고 주장하기 전에 전용 연결/계정을 가지고 있습니다. 가능한 한 모든 사람들을 한 번에 테스트하여 모든 사람들이 어떻게 오케스트라를 수행하는지 확인하고 싶습니다. – Zishan

+0

당신은 가능한 한 많이 응용 프로그램을 작성하고 싶지만 테스트 실행은 비용이들 것이라고 말했습니까? – Paparazzi

답변

3

예, 백그라운드 작업을 시작하면 작업이 다른 스레드에서 처리되는 동안 호출 방식으로 제어가 돌아갑니다.

배경 작업이 완료되면 알려주는 이벤트 처리기를 만들 수 있습니다.

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     if (e.Cancelled == true) 
     { 
      resultLabel.Text = "Canceled!"; 
     } 
     else if (e.Error != null) 
     { 
      resultLabel.Text = "Error: " + e.Error.Message; 
     } 
     else 
     { 
      resultLabel.Text = "Done!"; 
     } 
    } 

전체 사용 예

는 여기에서 찾을 수 있습니다 :

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

관련 문제