首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parallel.For步长

Parallel.For步长
EN

Stack Overflow用户
提问于 2011-08-22 09:51:10
回答 1查看 4.9K关注 0票数 8

有没有人知道有没有重载可以让我在Parallel.For循环中指定步长?无论是c#还是VB.Net格式的样例都很棒。

谢谢,贡萨洛

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-22 09:56:58

在谷歌上搜索"enumerable.range step“,你应该能够找到提供步进范围的Enumerable.Range的替代实现。然后,您可以只做一个

代码语言:javascript
复制
Parallel.ForEach(BetterEnumerable.SteppedRange(fromInclusive, toExclusive, step), ...)

如果google不工作,实现应该是这样的:

代码语言:javascript
复制
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;
        }
    }
}

或者,如果"yield“让人胆战心惊,你总是可以在原地创建一个常规的旧列表:

代码语言:javascript
复制
var list = new List<int>();
for (int i = fromInclusive; i < toExclusive; i += step) {
    list.Add(i);
}
Parallel.ForEach(list, ...);

如果需要的话,这应该可以很容易地翻译成VB。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7142446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档