title: Difference between calling an async method and Task.Run an async method
body: <p>I have a method in my view model </p>
  
  <pre><code>private async void SyncData(SyncMessage syncMessage)
  {
      if (syncMessage.State == SyncState.SyncContacts)
      {
          this.SyncContacts(); 
      }
  }
  
  private async Task SyncContacts()
  {
      foreach(var contact in this.AllContacts)
      {
         // do synchronous data analysis
      }
  
      // ...
  
      // AddContacts is an async method
      CloudInstance.AddContacts(contactsToUpload);
  }
  </code></pre>
  
  <p>When I call <code>SyncData</code> from the UI commands and I'm syncing a large chunk of data UI freezes. But when I call <code>SyncContacts</code> with this approach</p>
  
  <pre><code>private void SyncData(SyncMessage syncMessage)
  {
      if (syncMessage.State == SyncState.SyncContacts)
      {
          Task.Run(() =&gt; this.SyncContacts()); 
      }
  }
  </code></pre>
  
  <p>Everything is fine. Should not they be the same?
  I was thinking that not using await for calling an async method creates a new thread.</p>