title: Difference Between 2 Ways to Start Async Task Without Waiting in ASP.NET MVC
body: <p>An asynchronous method like below should be executed without waiting in a ASP.NET MVC website.</p>
  
  <pre><code>public async Task DoStaff()
  {
      // business logic here
  }
  </code></pre>
  
  <p>And we found two solutions to accomplish this and both work on our testbed:</p>
  
  <p><strong>Solution 1</strong>:</p>
  
  <pre><code>public void DoStaffWrapper()
  {
      DoStaff();
      // clean up
  }
  
  public ActionResult Caller()
  {
      DoStaffWrapper();
      // return blah blah blah;
  }
  </code></pre>
  
  <p><strong>Solution 2</strong>:</p>
  
  <pre><code>public async Task DoStaffWrapperAsync()
  {
      await DoStaff();
      // clean up
  }
  
  public ActionResult Caller()
  {
      Task.Run(() =&gt; DoStaffWrapperAsync());
      // return blah blah blah;    
  }
  </code></pre>
  
  <p>So what is the difference between them? which is the better and why? Any benefits?</p>