【发布时间】:2011-08-22 01:51:09
【问题描述】:
有谁知道是否有任何过载允许我在 Parallel.For 循环中指定步长? c# 或 VB.Net 中的示例都很棒。
谢谢,贡萨洛
【问题讨论】:
标签: c# .net vb.net parallel-extensions
有谁知道是否有任何过载允许我在 Parallel.For 循环中指定步长? c# 或 VB.Net 中的示例都很棒。
谢谢,贡萨洛
【问题讨论】:
标签: c# .net vb.net parallel-extensions
Google 搜索“enumerable.range step”,您应该能够找到提供阶梯范围的 Enumerable.Range 的替代实现。然后你就可以做一个
Parallel.ForEach(BetterEnumerable.SteppedRange(fromInclusive, toExclusive, step), ...)
如果 google 不工作,实现应该是这样的:
public static class BetterEnumerable {
public static IEnumerable<int> SteppedRange(int fromInclusive, int toExclusive, int step) {
for (var i = fromInclusive; i < toExclusive; i += step) {
yield return i;
}
}
}
或者,如果“收益回报”给了一个 heebie jeebies,你总是可以就地创建一个常规的旧列表:
var list = new List<int>();
for (int i = fromInclusive; i < toExclusive; i += step) {
list.Add(i);
}
Parallel.ForEach(list, ...);
如果需要的话,这应该很容易翻译成 VB。
【讨论】:
Parallel.ForEach。