【发布时间】:2015-01-14 17:04:09
【问题描述】:
我刚开始在 .NET 4.5 中编写和使用 TPL,想知道您是否可以帮助我。
基本上,我的 WPF 程序对一组可能在 5 到 1000 万之间的数据库记录执行繁重的工作。 我想利用 TPL 库来有效地管理这项工作,同时保持 UI 响应。
我的场景如下,我计划使用 3 个单独的任务来检索每个 300 万的数据,并将它们提供给我的“工人”。
我想要一个单独的任务,从上述任务的所有项目中获取每个项目并对其进行一些处理。
所以我想要一个所有 3 个任务都可以放入项目的项目的全局列表,我的第四个任务,然后应该从这个主列表中一次选择一个项目并对其进行一些处理,如果列表是,它应该等待为空以便再次填充等。
您能否提供一些关于如何使用 TPL 执行此操作的指导?我是 TPL 的新手。一些示例代码会很好。
【问题讨论】:
-
这听起来很复杂。在来自数据库的结果流上运行的 Parallel.ForEach 循环怎么样?
-
这取决于您需要处理的工作类型。对于 CPU 密集型计算,Parallel.ForEach() 可能是正确的选择。对于 I/O 绑定(例如文件和数据库连接),等待异步方法的操作会更高效。
标签: c#