title: Correct way to delay the start of a Task
body: <p>I want to schedule a task to start in x ms and be able to cancel it before it starts (or just at the beginning of the task).</p>
  
  <p>The first attempt would be something like</p>
  
  <pre><code>var _cancelationTokenSource = new CancellationTokenSource();
  
  var token = _cancelationTokenSource.Token;
  Task.Factory.StartNew(() =&gt;
      {
          token.ThrowIfCancellationRequested();
          Thread.Sleep(100);
          token.ThrowIfCancellationRequested();
      }).ContinueWith(t =&gt;
      {
          token.ThrowIfCancellationRequested();
          DoWork();
          token.ThrowIfCancellationRequested();
      }, token);
  </code></pre>
  
  <p>But I feel like there should be a better way, as this would use up a thread while in the sleep, during which it could be canceled.</p>
  
  <p>What are my other options?</p>