簡體   English   中英

C#,ConcurrentQueue大小限制和時間范圍

[英]C#, ConcurrentQueue size limit and time frame

我正在尋找一種方法:1。從ConcurentQueue讀取限制為某種尺寸的消息。 2.在一個時間范圍內不再讀取X消息。 我希望在2次擊中之一時停止從Q讀取,直到其他代碼完成並再次執行相同的操作。

我看到了Queue溢出的不同實現,在這里固定大小的隊列,它會自動將舊值出現在新的enques上,但無法弄清楚如何正確組合它們。

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

}

嘗試使用BlockingCollection而不是ConcurrentQueue

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

當您嘗試在集合中添加另一個元素時,如果已滿,則等待直到獲取元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM