title: How to correctly implement a TAP method?
body: <p>I want to provide a task-based asynchronous pattern-style method. When awaiting the method, I could not find any difference between these two ways of providing the method:</p>
  
  <pre><code>// GetStats is a delegate for a void method in this example
  public Task GetStatsAsync()
  {
      return Task.Run(GetStats);
  }
  
  public async Task GetStatsAsync()
  {
      return await Task.Run(GetStats);
  }
  
  // Usage:
  await GetStatsAsync();
  // Difference?
  </code></pre>
  
  <p>The upper method seems to have less overhead than the lower one. When looking at the MSDN blogs, I noticed that they seem to use the lower method. (For example in <a href="http://blogs.msdn.com/b/dotnet/archive/2012/06/06/async-in-4-5-enabling-progress-and-cancellation-in-async-apis.aspx" rel="nofollow noreferrer">this article</a>)</p>
  
  <p>Why? What exactly is the difference? They both seem to work.</p>