title: Algorithm for .NET consumer thread processing of two queues (based on priority)
body: <p>I have a C# 4.0 app with "high priority" and "low priority" queues implemented as such:</p>
  
  <p>BlockingCollection highPriority = new BlockingCollection(1000);
  BlockingCollection lowPriority = new BlockingCollection(1000);</p>
  
  <p>Any data produced in highPriority should be consumed before any data produced in lowPriority.  The twist here is that data may be produced to either of the two queues at any time.  So after I've consumed all of the data in highPriority, I will then being consuming any data that might be in lowPriority.  If new data is produced in highPriority while I'm consuming data in lowPriority, I want to finish consuming the current item in lowPriority and then switch back and process the data in highPriority.</p>
  
  <p>Can anyone suggest an algorithm to help with this?  Pseudo code is fine.  Thanks very much.</p>