有没有人知道是否有任何重载允许我在Parallel.For循环中指定步长? c#或VB.Net中的样本都很棒。
谢谢Gonzalo
答案 0 :(得分:15)
谷歌的“enumerable.range步骤”,你应该能够实现提供步进范围的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。