static void ExecuteQueueTask()
 {
     using (ProducerConsumeQueue <string> queue = new ProducerConsumeQueue <string>(Log))
     {
         queue.EnqueueTask("Start Log handler.");
         for (int i = 0; i < 10; i++)
         {
             queue.EnqueueTask("Handle log " + i);
         }
         queue.EnqueueTask("Complete");
     }
 }
 public Child(ProducerConsumeQueue<YourData> pdq)
 {
   Task.Factory.StartNew(
     () =>
     {
       while (true)
       {
         YourData item = pdq.Consume();
         try
         {
           ProcessItem(item);
         }
         catch
         {
           // Do something with exceptions here.
         }
       }
     ), TaskCreationOptions.LongRunning);
 }