title: Cancellation token in Task constructor: why?
body: <p>Certain <code>System.Threading.Tasks.Task</code> constructors take a <code>CancellationToken</code> as a parameter:</p>
  
  <pre><code>CancellationTokenSource source = new CancellationTokenSource();
  Task t = new Task (/* method */, source.Token);
  </code></pre>
  
  <p>What baffles me about this is that there is no way from <em>inside</em> the method body to actually get at the token passed in (e.g., nothing like <code>Task.CurrentTask.CancellationToken</code>). The token has to be provided through some other mechanism, such as the state object or captured  in a lambda.</p>
  
  <p>So what purpose does providing the cancellation token in the constructor serve?</p>