title: Difference between method returning Task and async Task
body: <p>I have written below two methods</p>
  
  <pre><code>    private Task&lt;string&gt; GetStringTask(string url)
      {
          var client = new WebClient();
          var task = client.DownloadDataTaskAsync(new Uri(url));
  
          var task2 = task.ContinueWith&lt;string&gt;(task1 =&gt;
          {
              var str = Encoding.Default.GetString(task1.Result);
              Thread.Sleep(5000);
              return str;
          });
  
          return task2;
      }
  
      private async Task&lt;string&gt; GetStringAsyc(string url)
      {
          var client = new WebClient();
          var htmlByte = await client.DownloadDataTaskAsync(new Uri(url));
          var task2 = await Task.Factory.StartNew(() =&gt;
          {
              var str = Encoding.Default.GetString(htmlByte);
              Thread.Sleep(2000);
              return str;
          });
  
          return task2;
      }
  </code></pre>
  
  <p>I can invoke the both the methods inside the another async method same way like below</p>
  
  <pre><code>var mystring = await GetStringTask("http://www.microsoft.com");
  
  var mystring1 = await GetStringAsync("http://www.microsoft.com");
  </code></pre>
  
  <p>Both method return the same result. Can anyone explain me the difference between these two methods.</p>