Files
Masuit.Tools/Masuit.Tools.NoSQL.MongoDBClient.Core/ConcurrentLimitedQueue.cs
T
2018-03-19 00:34:34 +08:00

35 lines
769 B
C#

using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
namespace Masuit.Tools.NoSQL.MongoDBClient.Core
{
/// <summary>
/// 定长队列
/// </summary>
/// <typeparam name="T"></typeparam>
class ConcurrentLimitedQueue<T> : ConcurrentQueue<T>
{
public int Limit { get; set; }
public ConcurrentLimitedQueue(int limit)
{
Limit = limit;
}
public ConcurrentLimitedQueue(IEnumerable<T> list) : base(list)
{
Limit = list.Count();
}
public new void Enqueue(T item)
{
if (Count >= Limit)
{
TryDequeue(out var _);
}
base.Enqueue(item);
}
}
}