maybe instead of a while loop your class could detect when it has reached the 'steady state' of count items, then you just need to Dequeue 1 item every time you Enqueue. We never actually Dequeue anywhere else so it will in principle always have 'roughly exactly' count items, right? In fact it is quite more like an LRU cache than a queue.

We could even consider using System.Runtime.Caching instead of ConcurrentQueue.