title: How to call an async method from within a loop without awaiting?
body: <p>Consider this piece of code, where there is some work being done within a for loop, and then a recursive call to process sub items.  I wanted to convert DoSomething(item) and GetItems(id) to async methods, but if I await on them here, the for loop is going to wait for each iteration to finish before moving on, essentially losing the benefit of parallel processing. How could I improve the performance of this method? Is it possible to do it using async/await?</p>
  
  <pre><code>public void DoWork(string id)
          {            
                  var items = GetItems(id);  //takes time
  
                  if (items == null)
                      return;
  
                  Parallel.ForEach(items, item =&gt;
                  {
                      DoSomething(item); //takes time
                      DoWork(item.subItemId);                    
                  });           
          }
  </code></pre>