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();
    }