using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PLC { /// /// 泛型定长数据队列 /// /// public class DataQueue { public DataQueue(int length) { dataQueue = new Queue(length); this.length = length; queueLocker = new object(); } /// /// 队列长度 /// private int length; /// /// 泛型队列 /// private Queue dataQueue; private readonly object queueLocker; /// /// 向列尾插入元素 /// 并移去列首超出数量的元素 /// /// public void Enqueue(T value) { lock (queueLocker) { dataQueue.Enqueue(value); if (dataQueue.Count > length) dataQueue.Dequeue(); } } /// /// 是否整个队列的数据都相同、 /// public bool IsSame { get { lock (queueLocker) { if (dataQueue.Count < length) return false; return dataQueue.Distinct().Count() == 1; } } } } }