title: Task constructor vs Task.Run with async Action - different behavior
body: <p>Could anyone please explain this, perhaps I'm missing something obvious.</p>
  
  <p>These 2 cases seem to be identical in behavior, and yet they are not.</p>
  
  <p><strong>Case 1</strong>:</p>
  
  <ul>
  <li><p>Start a Task with an <code>async</code> <code>Action,</code> that does some work for some time:</p>
  
  <pre><code>var t = Task.Run(async () =&gt; { await Task.Delay(2000); });
  </code></pre></li>
  <li><p>A second task waits for the first one:</p>
  
  <pre><code>var waitingTask = Task.Run(() =&gt; { t.Wait(); });
  </code></pre></li>
  <li><p>Wait for the second task:</p>
  
  <pre><code>waitingTask.Wait();
  </code></pre></li>
  </ul>
  
  <p><strong>Case 2</strong>:</p>
  
  <ul>
  <li><p>Build a <code>Task</code> using the <code>Task</code> constructor, passing the same <code>async</code> <code>Action</code>:</p>
  
  <pre><code>var t = new Task(async () =&gt; { await Task.Delay(2000); });
  </code></pre></li>
  <li><p>Start another task to Wait for the first one (just like in the first case):</p>
  
  <pre><code>var waitingTask = Task.Run(() =&gt; { t.Wait(); });
  </code></pre></li>
  <li><p>Start the first task:</p>
  
  <pre><code>t.Start();
  </code></pre></li>
  <li><p>Wait for the second task:</p>
  
  <pre><code>waitingTask.Wait();
  </code></pre></li>
  </ul>
  
  <p>The first case behaves as expected: the waiting task ends after the first one does, after 2 seconds.</p>
  
  <p>The second case is weird: <strong>the waiting task ends very quickly, long before the first one does</strong>.</p>
  
  <p>It's easy to see when printing messages from both tasks. A print at the end of the second task will show the difference.</p>
  
  <p>I'm using VS 2015 Preview, which probably uses Roslyn to compile, if this matters.</p>