title: Async await how to use return values
body: <p>I have a windows service that I have inherited from another developer, it runs very slow and has numerous slow call to the eBay API. I wish to speed it up without too much refactoring.</p>
  
  <p>I've just started to look at using c# async/await to try to get some of these slow call to run async. 
  Here's what i'm trying to achieve:</p>
  
  <p>I have a 1 very busy method that makes lots of calls as below:</p>
  
  <pre><code>getProducts
  getCategories
  getVehicles
  getImages
  </code></pre>
  
  <p>My thoughts were that I could simply change the methods to <code>async</code> and add <code>Task&lt;T&gt;</code> to the return type as below:</p>
  
  <pre><code>public async Task&lt;String&gt; ProcessAdditionalProductDetialsAsync(ItemType oItem)
  {
      String additionalProductDetails = string.Empty;
  
      if (oItem.ItemSpecifics.Count &gt; 0)
      {
          foreach (NameValueListType nvl in oItem.ItemSpecifics)
          {                  
              if (nvl.Value.Count &gt; 0)
              {
                  foreach (string s in nvl.Value)
                  {
                      additionalProductDetails += "&lt;li&gt;&lt;strong&gt;" + nvl.Name + ":&lt;/strong&gt;&amp;nbsp;" + s + "&lt;/li&gt;";
                  }
              }
          }
      }
      return additionalProductDetails;
  }
  </code></pre>
  
  <p>Then call them with await:  </p>
  
  <pre><code>Task&lt;String&gt; additionalProductDetials = ebayPartNumbers.ProcessAdditionalProductDetialsAsync(item);
  Task&lt;PartNumberCollection&gt; partNumberCollection = ebayPartNumbers.ProcessPartNumbersAsync(item); 
  
  
  await Task.WhenAll(partNumberCollection, additionalProductDetials);
  </code></pre>
  
  <p>How do I get hold of the returned types so I can use them?  I have tried just using <code>partNumberCollection</code> but it only has the <code>await</code> properties available.</p>