【发布时间】:2016-03-20 19:11:13
【问题描述】:
我有以下代码来启动后台工作者:
foreach (var item in this.lstbxItems.Items)
{
if (!bw.IsBusy)
bw.RunWorkerAsync(item);
}
有没有办法等待后台工作人员 (bw) 完成,然后将列表中的下一项发送给它?
【问题讨论】:
-
您使用哪个版本的 .net 框架?如果 4.0 或更高版本,丢弃 Backgroundworker 并使用
Task。 -
我建议使用TPL then,这将使许多任务变得更容易。比如等待操作完成、并发启动多个任务、错误处理等。
-
这听起来像是使用 Microsoft 的响应式扩展 (NuGet "Rx-WinForms") 的完美场景。
标签: c# multithreading winforms