title: What is "cancellationToken" in the TaskFactory.StartNew() used for?
body: <p><a href="http://msdn.microsoft.com/en-us/library/dd988458.aspx" rel="noreferrer">http://msdn.microsoft.com/en-us/library/dd988458.aspx</a></p>
  
  <p><strong>UPD</strong>:</p>
  
  <p>so, let's discuss this article then: <a href="http://msdn.microsoft.com/en-us/library/dd997396.aspx" rel="noreferrer">http://msdn.microsoft.com/en-us/library/dd997396.aspx</a></p>
  
  <p>I've changed that code a little:</p>
  
  <pre><code>    static void Main()
      {
  
          var tokenSource2 = new CancellationTokenSource();
          CancellationToken ct = tokenSource2.Token;
  
          var task = Task.Factory.StartNew(() =&gt;
          {
  
              // Were we already canceled?
              ct.ThrowIfCancellationRequested();
  
              bool moreToDo = true;
              Thread.Sleep(5000);
              while (moreToDo)
              {
  
                  // Poll on this property if you have to do
                  // other cleanup before throwing.
                  if (ct.IsCancellationRequested)
                  {
                      Console.WriteLine("exit");
                      // Clean up here, then...
                      ct.ThrowIfCancellationRequested();
                  }
  
              }
          }, tokenSource2.Token); // this parameter useless
  
          Console.WriteLine("sleep");
          Thread.Sleep(2000);
          Console.WriteLine("cancel");
  
          tokenSource2.Cancel();
  
          // Just continue on this thread, or Wait/WaitAll with try-catch:
          try
          {
              task.Wait();
          }
          catch (AggregateException e)
          {
              foreach (var v in e.InnerExceptions)
              {
                  Console.WriteLine(e.Message + " " + v.Message);
              }
          }
  
          Console.ReadKey();
      }
  </code></pre>
  
  <p><strong>UPD</strong>: Well, this changes only <code>task.IsCanceled</code>, which is imho useless, due to I still ought to implement all manually.</p>