title: Potential benefit of async and Parallel.ForEach for IO operations
body: <p>I am developing and maintaining a .NET 3.5 tool at work, and wondering whether a potential gain in performance can be gained by using .NET 4's new TPL or even the new async features which are still in CTP.</p>
  
  <p>The tool's work can be roughly described as:</p>
  
  <ol>
  <li>Retrieve a list of container files (currently .MSI files) -- a few dozens of them, ~ 50-70</li>
  <li>Iterate over each file, and construct a runtime object representing it.</li>
  <li>For each runtime object created, perform some queries on its contents (compare its contents with some files on the system).</li>
  </ol>
  
  <p>Items #2 and #3 are the lengthy ones, and i would like to get some opinions on the potential of improving the execution time (which is a few minutes right now) by using Parallel.ForEach or other methods for executing this work in parallel.</p>
  
  <p>Potential improvements i am foreseeing are:</p>
  
  <p>Making use of multiple CPUs/cores
  Keeping the app running while IO operations (like reading files) are being done to do something else.</p>
  
  <p>Would you think this kind of application can benefit from these, before jumping into development?</p>