我有一個程序,我想依次將多個任務傳遞給BackGroundWorker。我的問題是RunWorkerCompleted事件沒有被執行,IsBusy標誌沒有被清除。 ProgressChanged事件執行。 DoWork例程中的最終語句確實得到執行。我可以完成第一項任務,但不能完成任何後續任務。BackGroundWorker無法識別DoWork的完成
任何想法要看什麼?
編輯(代碼加):
概念(略微簡化的)是這樣的:
for (int i = 0; i < cnt; i++)
{
string sDiv = dlg.GetItem(i).Substring(0, 5);
bgw8Div.RunWorkerAsync(sDiv);
// some kind of wait or delay or test needed here
}
如果CNT == 1,一切都很好。如果cnt> 1,則無論等待或延遲放在循環中,情況i == 0都不會執行RunWorkerCompleted事件。
請顯示您的代碼。任何一個BackgroundWorker只能完成一次。如果你在等待額外的任務,你還沒有真正完成。 – 2011-05-19 16:53:56
我在BackgroundWorker內部移動了循環,並且它全部執行正常,但現在將表單上的用戶消息放在窗體上可以讓用戶知道進度,這會更加複雜。 – SeaDrive 2011-05-19 18:14:14