2012-07-11 57 views
0

我在寫一個.NET Windows窗體應用程序,用於導入大量數據並對每個導入進行各種計算。爲此,我創建了一個「主要」工人和幾個「孩子」工人。BackgroundWorker - 控件在工作完成後到達哪裏?

導入作業全部列在MySql數據庫中,我設置了一個函數來檢查作業是否存在。

我需要知道的是在兒童工完成工作後,控制權交給了哪裏?他們是否需要再次打電話給主要工作人員運行併爲童工分配工作?

主要工作人員被稱爲表單加載事件。因此,如果我第一次運行我的主要工作人員並開始在子級別工作,主要工作人員是否會將控件重新傳遞到表單加載?

由於我的導入作業每個都花錢(API使用/命中),所以我無法進行測試運行。所以我想在進行測試之前儘可能多地編寫應用程序。

+0

你不能寫進口用於測試一些虛擬路由? – Paparazzi 2012-07-11 22:51:30

+0

嗨Blam。我可以,但是每個子工都有自己的專用連接/帳戶,以連接到MySql,表鎖和許多存儲過程進行調用,然後他們可以聲稱工作已完成。如果可能的話,我想一次性測試所有這些,看看它們是如何協調的。 – Zishan 2012-07-11 23:10:19

+0

你說你想盡可能多地寫應用程序,但測試運行需要花費。 – Paparazzi 2012-07-11 23:16:27

回答

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

相關問題