【发布时间】:2011-05-19 16:49:54
【问题描述】:
我有一个程序,我想在其中将多个任务按顺序传递给 BackGroundWorker。我的问题是未执行 RunWorkerCompleted 事件并且未清除 IsBusy 标志。 ProgressChanged 事件确实执行。 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,则不会为 case i==0 执行 RunWorkerCompleted 事件,无论我在循环中放置了等待还是延迟。
【问题讨论】:
-
请出示您的代码。任何一个 BackgroundWorker 只意味着完成一次。如果您正在等待额外的任务,那么您还没有真正完成。
-
我将循环移到 BackgroundWorker 中,一切正常执行,但现在将我想要的用户消息放在表单上以让用户了解进度会更加复杂。
标签: .net backgroundworker