【发布时间】:2017-11-17 06:43:51
【问题描述】:
我有 C# 列表,其中包含大约 8000 个项目(文件路径)。我想在所有这些项目上并行运行一个方法。为此,我有以下 2 个选项:
1) 手动将列表分成小块(例如每个 500 大小)并为这些小列表创建动作数组,然后调用 Parallel.Invoke,如下所示:
var partitionedLists = MainList.DivideIntoChunks(500);
List<Action> actions = new List<Action>();
foreach (var lst in partitionedLists)
{
actions.Add(() => CallMethod(lst));
}
Parallel.Invoke(actions.ToArray())
2) 第二种选择是运行 Parallel.ForEach,如下所示
Parallel.ForEach(MainList, item => { CallMethod(item) });
- 这里最好的选择是什么?
- Parallel.Foreach 如何划分列表 分成小块?
请建议,提前谢谢。
【问题讨论】:
-
你也可以使用
AsParallelLinQ 扩展方法;)
标签: c# multithreading parallel.foreach parallel.invoke