Queue Collection Types
The System.Collections.Queue, System.Collections.Generic.Queue<T>, and System.Collections.Concurrent.ConcurrentQueue<T> classes are first-in, first-out collection classes that implement the ICollection interface and the ICollection<T> generic interface.
Queues and stacks are useful when you need temporary storage for information; that is, when you might want to discard an element after retrieving its value. Use Queue if you need to access the information in the same order that it is stored in the collection. Use Stack if you need to access the information in reverse order. Use ConcurrentQueue<T> or ConcurrentStack<T> if you need to access the collection from multiple threads concurrently.
Three main operations can be performed on a Queue and its elements: