using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; namespace Masuit.Tools.Systems; /// /// 定长队列 /// /// public class ConcurrentLimitedQueue : ConcurrentQueue { /// /// 长度 /// public int Limit { get; set; } /// /// 定长队列 /// /// public ConcurrentLimitedQueue(int limit) { Limit = limit; } /// /// 定长队列 /// /// public ConcurrentLimitedQueue(IEnumerable list) : base(list) { Limit = list.Count(); } /// /// /// /// /// public static implicit operator ConcurrentLimitedQueue(List list) { return new ConcurrentLimitedQueue(list); } /// /// 入队 /// /// public new void Enqueue(T item) { while (Count >= Limit) { TryDequeue(out _); } base.Enqueue(item); } }