| 1234567891011121314151617181920212223242526272829 |
- using System.Collections.Concurrent;
- namespace Server.Utils
- {
- public class FixedSizedQueue<T> : ConcurrentQueue<T>
- {
- private readonly object syncObject = new object();
- public int Size { get; private set; }
- public FixedSizedQueue(int size)
- {
- Size = size;
- }
- public new void Enqueue(T obj)
- {
- base.Enqueue(obj);
- lock (syncObject)
- {
- while (base.Count > Size)
- {
- T outObj;
- base.TryDequeue(out outObj);
- }
- }
- }
- }
- }
|