title: async/await different thread ID
body: <p>I was reading about async/await  recently and I am confused with the fact that many of the articles/posts I was reading state that new thread is not created when using async await (<a href="https://stackoverflow.com/questions/27265818/does-async-await-create-new-thread">Example</a>).</p>
  
  <p>I have created a simple console app to test it</p>
  
  <pre><code>class Program
      {
          static  void Main(string[] args)
          {
              Console.WriteLine("Main: " + Thread.CurrentThread.ManagedThreadId);
              MainAsync(args).Wait();
              Console.WriteLine("Main End: " + Thread.CurrentThread.ManagedThreadId);
  
              Console.ReadKey();
          }
  
  
          static async Task MainAsync(string[] args)
          {
              Console.WriteLine("Main Async: " + Thread.CurrentThread.ManagedThreadId);
  
              await thisIsAsync();
          }
  
          private static async Task thisIsAsync()
          {
              Console.WriteLine("thisIsAsyncStart: " + Thread.CurrentThread.ManagedThreadId);
              await Task.Delay(1);
              Console.WriteLine("thisIsAsyncEnd: " + Thread.CurrentThread.ManagedThreadId);
  
          }
      }
  </code></pre>
  
  <p>Output of the following code is:</p>
  
  <pre><code>Main: 8
  Main Async: 8
  thisIsAsyncStart: 8
  thisIsAsyncEnd: 9
  Main End: 8
  </code></pre>
  
  <p>Am I missing the point, or thisIsAsyncEnd is having different thread ID than other actions?</p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>I have updated code as suggested in the answer below to <code>await Task.Delay(1)</code>, but I am still seeing the same results.</p>
  
  <p>Quote from the answer below:</p>
  
  <pre><code>Rather, it enables the method to be split into multiple pieces, some of which may run asynchronously
  </code></pre>
  
  <p>I want to know where does the <code>asynchronously</code> part run, if there are no other threads created?
  If it runs on the same thread, shouldn't it block it due to long I/O request, or compiler is smart enough to move that action to another thread if it takes too long, and a new thread is used after all?</p>