有谁知道是否有任何过载可以让我在 Parallel.For 循环中指定步长?c# 或 VB.Net 中的示例会很棒。
谢谢,贡萨洛
有谁知道是否有任何过载可以让我在 Parallel.For 循环中指定步长?c# 或 VB.Net 中的示例会很棒。
谢谢,贡萨洛
谷歌搜索“enumerable.range step”,您应该能够找到提供阶梯范围的 Enumerable.Range 的替代实现。然后你可以做一个
Parallel.ForEach(BetterEnumerable.SteppedRange(fromInclusive, toExclusive, step), ...)
如果谷歌不工作,实现应该是这样的:
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。