using System.Collections.Concurrent; using System.Collections.Generic; namespace SamplePre.Common { public class ConcurrentQueueExt { private readonly ConcurrentQueue queue = new ConcurrentQueue(); public void Enqueue(T msgData) { if (msgData != null) { queue.Enqueue(msgData); } } //public void Enqueue(List 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 GetAll() { List result = new List(); 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; } } } }