This isn\'t about the different methods I could or should be using to utilize the queues in the best manner, rather something I have seen happening that makes no sense to me.
Here is what I think the problematic sequence is:
(0 < queue.Count)
evaluates to true, the queue is not empty.However, you say nothing else is dequeuing...
Try outputting the count inside the if block. If you see the count jump numbers downwards, someone else is dequeuing.