 <p>The third parameter is a <code>delegate</code>. So every iteration you could specify what your indexing variable shall do inside the delegate.</p> <p><strong>EDIT:</strong> Ok found a working solution: As already suggested by Dmitry Bychenko you should still start from 0 and just add the <code>startValue</code> as an offset</p> <pre><code>int something = 16; int startValue = 3; int stepSize = 2; List&lt;int&gt; numbers = Enumerable.Range(0, 20).ToList(); Parallel.For(0, something / 2, i =&gt; { int ind = (stepSize * i) + startValue ; Console.WriteLine(numbers[ind]); }); </code></pre>