title: Parallel.For with 64-bit unsigned indexes (UInt64)
body: <p>In C#, there's a <code>System.Threading.Tasks.Parallel.For(...)</code> which does the same as a <code>for</code> loop, without order, but in multiple threads.
  The thing is, it works only on <code>long</code> and <code>int</code>, I want to work with <code>ulong</code>. Okay, I can typecast but I have some trouble with the borders.</p>
  <p>Let's say, I want a loop from <code>long.MaxValue-10</code> to <code>long.MaxValue+10</code> (remember, I'm talking about <code>ulong</code>). How do I do that?</p>
  <p>An example:</p>
  <pre><code>for (long i = long.MaxValue - 10; i &lt; long.MaxValue; ++i)
  {
      Console.WriteLine(i);
  }
  //does the same as
  System.Threading.Tasks.Parallel.For(long.MaxValue - 10, long.MaxValue, delegate(long i)
  {
      Console.WriteLine(i);
  });
  //except for the order, but theres no equivalent for
  long max = long.MaxValue;
  for (ulong i = (ulong)max - 10; i &lt; (ulong)max + 10; ++i)
  {
      Console.WriteLine(i);
  }
  </code></pre>