static void Main() { Queue queue1 = new Queue(); Queue queue2 = new Queue(); // ... operations to fill the queues with data. // Process each queue in a separate threda. QueueProcessor proc1 = new QueueProcessor(queue1); proc1.BeginProcessData(); QueueProcessor proc2 = new QueueProcessor(queue2); proc2.BeginProcessData(); // ... do some other work in the meantime. // Wait for the work to finish. proc1.EndProcessData(); proc2.EndProcessData(); }