1

我正在寻找一种方法: 1. 从限制为一定大小的 ConcurentQueue 读取消息。2. 一次阅读不超过 X 条消息。我想在 2 次中的一个中停止从 Q 读取,直到完成其他代码并再次执行相同的操作。

我看到了队列溢出的不同实现,在这里固定大小的队列会在新的队列中自动将旧值出列, 但无法弄清楚如何正确组合它们。

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);
    }
}

}

4

1 回答 1

0

尝试使用BlockingCollection而不是ConcurrentQueue

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

当您尝试在集合中添加另一个元素时,如果已满,它会等到一个元素被取走。

于 2019-06-13T15:27:29.250 回答