BackGroundWorker 无法识别 DoWork 的完成
我有一个程序,我想将多个任务按顺序传递给 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,则无论我在循环中放置多少等待或延迟,对于情况 i==0 都不会执行 RunWorkerCompleted 事件。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须以编程方式创建BackgroundWorker:
另一个选择是等待
bgw8Div
完成。您可以在 如何等待要取消的BackgroundWorker?。当然,这样您就会失去多线程功能。You have to create BackgroundWorker programmatically:
Another option is to wait until your
bgw8Div
is completed. You can find more info at How to wait for a BackgroundWorker to cancel?. Of course, you'll lose the multi-threading features this way.