我正在寻找一种方法: 1.从限制为一定大小的ConcurentQueue中读取消息。 2.一次阅读不超过X条消息。 我想在2次点击之一后停止从Q读取数据, 直到其他代码完成,然后再次执行相同的操作。
我看到了队列溢出的不同实现, 在这里Fixed size queue which automatically dequeues old values upon new enques 但是可以 t弄清楚如何正确组合它们。
public class FixedSizedQueue<T>
public int Size { get; private set; }
public FixedSizedQueue(int size)
{
Size = size;
}
public void Enqueue(T obj)
{
queue.Enqueue(obj);
while (queue.Count > Size)
{
T outObj;
queue.TryDequeue(out outObj);
}
}
}
答案 0 :(得分:0)
尝试使用BlockingCollection
代替ConcurrentQueue
当您尝试在集合中添加另一个元素(如果已满)时,它会等到获取一个元素为止。