Repeatedly process items in parallel : <p>I have a set of items that need to be processed in parallel over and over again. </p>

<p>I can do this:</p>

<pre><code>while (true)
{
   Parallel.ForEach(sources, source =&gt;
   {
      // do lots of work with source
   })
}
</code></pre>

<p>But the problem is, if one source takes far longer than the others, it will effectively hang the while loop and I'd like to reprocess each item in the list without waiting for other items to complete. </p>

<p>How can I accomplish that? Start a task for each source which has it's own while loop or is there a more elegant way to do this?</p>
