title: .NET Async task taking too long to create
body: <p>Is there a reason for an <code>async Task&lt;&gt; foo()</code> to take time being created? (Just created, awaiting it takes even another chunk of time).
  When profiling my web service performance I noticed that the mere creation of the task takes a considerable amount of time (in the order of the hundreds of milliseconds).</p>
  
  <pre><code>//DB intensive async tasks, just creating them all takes 600ms-1800ms
  Task&lt;Egg&gt; eggTask = FryEggs(2);
  Task&lt;Bacon&gt; baconTask = FryBacon(3);
  Task&lt;Toast&gt; toastTask = ToastBread(2);
  //actually awaiting them takes some hundreds of milliseconds more...
  await Task.WhenAll(eggTask, baconTask, toastTask);
  </code></pre>
  
  <p>The functions in question don't do heavy synchronous work before the first await inside them, so I can't find a compelling reason for them to work this way. Something in this fashion:</p>
  
  <pre><code>async Task&lt;Object&gt; FryEggs(){
      VeryLightweightSynchronousWork();
      await BottleneckingIOWork();
  }
  </code></pre>
  
  <p>I have tried using <code>Task.Factory.StartNew</code> and it <strong>does</strong> return immediately:</p>
  
  <pre><code>async Task&lt;Object&gt; FryEggs(){
      var res = await Task.Factory.StartNew(async =&gt; {
          VeryLightweightSynchronousWork();
          return await BottleneckingIOWork();
      }
      return await res;
  }
  </code></pre>
  
  <p>I don't understand this behaviour.</p>
  
  <p>I actually don't care too much about my specific case, I want to understand <strong>why</strong>, on a reference-based point of view, should this happen. My current understanding is that a Task starts as soon as it is called, but it should do so <strong>asynchronously</strong>. So, why would the main thread wait so much for an async task to be created?</p>
  
  <p>Thank you in advance!</p>