Files

76 lines
1.6 KiB
C#
Raw Permalink Normal View History

2026-04-30 11:34:41 +08:00
using System.Collections.Concurrent;
using System.Collections.Generic;
namespace SamplePre.Common
{
public class ConcurrentQueueExt<T>
{
private readonly ConcurrentQueue<T> queue = new ConcurrentQueue<T>();
public void Enqueue(T msgData)
{
if (msgData != null)
{
queue.Enqueue(msgData);
}
}
//public void Enqueue(List<T> msgDatas)
//{
// if (msgDatas.IsNullOrEmpty()) return;
// foreach (var msgData in msgDatas)
// {
// queue.Enqueue(msgData);
// }
//}
public T GetOne()
{
if (queue.TryDequeue(out T result))
{
return result;
}
else
{
return default;
}
}
public List<T> GetAll()
{
List<T> result = new List<T>();
int count = queue.Count;
if (count > 0)
{
for (int i = 0; i < count; i++)
{
if (queue.TryDequeue(out T t))
{
result.Add(t);
}
}
}
return result;
}
public void Clear()
{
while (!queue.IsEmpty)
{
queue.TryDequeue(out _);
}
}
public int Count
{
get
{
return queue.Count;
}
}
}
}