Does anyone know if there's any overload that would allow me to specify a step size in a Parallel.For
loop? Samples in either C#
or VB.Net
would be great.
Parallel.For step size
Asked Answered
Google for "enumerable.range step" and you should be able to come upon alternate implementations of Enumerable.Range that provide stepped ranges. Then you can just do a
Parallel.ForEach(BetterEnumerable.SteppedRange(fromInclusive, toExclusive, step), ...)
If google isn't working, implementation should be something like this:
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;
}
}
}
Alternately if "yield return" gives one the heebie jeebies, you can always just create a regular old list in-place:
var list = new List<int>();
for (int i = fromInclusive; i < toExclusive; i += step) {
list.Add(i);
}
Parallel.ForEach(list, ...);
This should be easily translatable to VB if that's a requirement.
Thanks Dax. Would it be too much extra work if i'm trying to do this in VB.Net where there's no yield return? –
Brufsky
No VB experience, but you should be able to use a for loop to make a List Of Integer with the integers you need, and then use
Parallel.ForEach
with that list. –
Veronikaveronike @Gonzalo: The async CTP enables the use of iterators in VB.NET. –
Manners
© 2022 - 2024 — McMap. All rights reserved.