title: ParallelOptions.CancellationToken seems useless
body: <p>One of the members of the ParallelOptions is CancellationToken, the value of which is meant to be accessed within the lambda function of Parallel.ForEach.</p>
  
  <p>Using it requires instantiating a CacellationToken before invoking Parallel.ForEach so why can't that local variable be accessed directly within the Lambda function of the ForEach?</p>
  
  <p>e.g. instead of: </p>
  
  <pre><code>var ct = new CancellationToken();
  var options = new ParallelOptions { CancellationToken = ct }
  
  Parallel.ForEach(source, options, (item) =&gt;
  {
       options.ct.ThrowIfCancellationRequested();
  })
  </code></pre>
  
  <p>why can't I just use:</p>
  
  <pre><code>var ct = new CancellationToken();
  
  Parallel.ForEach(source, (item) =&gt;
  {
       ct.ThrowIfCancellationRequested();
  })
  </code></pre>
  
  <p>Is it just a convenient place to stash the token, or is there some underlying reason for this design?</p>