title: Why Task.Start() does not wait on Task.Delay()?
body: <p>I don't understand why the following code executes .ContinueWith() <em>before</em> Task.Delay() has ended its execution.</p>
  <pre><code>static void Main(string[] args)
  {
      Task t = new Task(async () =&gt;
      {
          Console.WriteLine(&quot;1 delaying&quot;);
          await Task.Delay(2000);
          Console.WriteLine(&quot;2 delayed&quot;);
      });
  
      t.Start();
      t.ContinueWith(_ =&gt; Console.WriteLine(&quot;3 continue&quot;));
  
      Console.ReadKey();
  }
  </code></pre>
  <p>Output is:</p>
  <pre><code>1 delaying 
  3 continue 
  2 delayed
  </code></pre>
  <p>But I was expecting that &quot;3 continue&quot; should be executed as last.</p>
  <p>With Task.Run() it works as expected:</p>
  <pre><code>Task.Run(async () =&gt;
  {
      Console.WriteLine(&quot;1 delaying&quot;);
      await Task.Delay(2000);
      Console.WriteLine(&quot;2 delayed&quot;);
  })
  .ContinueWith(_ =&gt; Console.WriteLine(&quot;3 continue&quot;));
  
  Console.ReadKey();
  </code></pre>
  <p>Results in:</p>
  <pre><code>1 delaying
  2 delayed
  3 continue
  </code></pre>
  <p>In my case, I have to create a Task and start it later. How can I achieve that a created Task awaits Task.Delay() without executing the next Task (.ContinueWith()) first?</p>