title: How to create a parallel prefetch for a foreach
body: <p>Given the numerous new ways of performing asynchronous operations in C#, TPL, Parallel Extensions, Async CTP, Reactive Extensions I was wonder what the simplest way to parallelize the fetching and processing portions of the following would be:</p>
  <pre><code>foreach(string url in urls)
  {
     var file = FetchFile(url);
     ProcessFile(file);
  }
  </code></pre>
  <p>The proviso is that whilst files can be fetched at anytime <code>ProcessFile</code> can only handle one file at a time and should be called sequentially.</p>
  <p>In short what is the simplest way to get <code>FetchFile</code> and <code>ProcessFile</code> to behave in a pipelined way i.e. happen concurrently?</p>