title: TryTake vs GetConsumingEnumerable
body: <p>What is the difference between solution 1 and 2, _taskQ is BlockingCollection and I am trying to implement a Producer-Consumer scenario. The BlockingCollection uses the default ConcurrentQueue for internal storage.</p>
  
  <pre><code>//Solution 1
  foreach (Action action in _taskQ.GetConsumingEnumerable())
  {
      action(); // Perform task.
      Thread.Sleep(1000);
  }
  </code></pre>
  
  <p>TryTake blocks when there is no item</p>
  
  <pre><code>//Solution 2
  Action t;
  while(_taskQ.TryTake(out t))
  {
      t();
      Thread.Sleep(1000);
  }
  </code></pre>