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;
}
}
}
}
}