76 lines
1.6 KiB
C#
76 lines
1.6 KiB
C#
|
|
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;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|