C#,ConcurrentQueue大小限制和时间范围

时间:2019-06-13 15:13:36

标签: c# queue concurrent-queue

我正在寻找一种方法: 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);
    }
}

}

1 个答案:

答案 0 :(得分:0)

尝试使用BlockingCollection代替ConcurrentQueue

https://docs.microsoft.com/en-us/dotnet/api/system.collections.concurrent.blockingcollection-1?view=netframework-4.8

当您尝试在集合中添加另一个元素(如果已满)时,它会等到获取一个元素为止。