title: Async code implementation correctness
body: <p>I have an application where I make a call like this:</p>
  
  <pre><code>myViewModel.ProcessDirectoryAsync(rootDirectoryInfo);
  </code></pre>
  
  <p>and in myViewModel:</p>
  
  <pre><code>public async ProcessDirectoryAsync(DirectoryInfo rootDirectoryInfo)
  {
      await Task.Run(() =&gt; ProcessDirectory(rootDirectoryInfo));
  }
  
  public void ProcessDirectory(DirectoryInfo rootDirectoryInfo)
  {
      // do work and update progress in UI with a bunch of data
  }
  </code></pre>
  
  <p>The idea is that I want my ui to show multiple threads of work, each updating the UI with its progress and data independently.</p>
  
  <p>This code works just fine.</p>
  
  <p>But I wonder if it is not right.  If I put an await (as recommended by resharper :) ) on this line:</p>
  
  <pre><code>await myViewModel.ProcessDirectoryAsync(rootDirectoryInfo);
  </code></pre>
  
  <p>Then I see the threads progress serially, rather than in parallel.  Which is not what I want.</p>
  
  <p>So first, is there something inherently evil in the way I've implemented this (which works), and if so what is the correct way?</p>