如何管理队列
本文关键字:队列 管理 何管理 | 更新日期: 2024-10-24 04:28:31
首先对不起我的英语,希望你能理解。我有一个计时器,它每1 Sn更新一个"object[][]tempServices",并发送到下面的函数我想做的是将tempServices的元素添加到队列中,但只添加一次(队列中没有相等的元素)。
myQ = new Queue<object[]>();
public void AddToQueue(object[][] tempServices)
{
bool checkQueue;
lock (myQ)
{
foreach (object[] tSer in tempServices)
{
checkQueue = false;
if (myQ.Count == 0)
myQ.Enqueue(tSer);
for (int i = 0; i < myQ.Count; i++)
{
cv = myQ.ToArray();
if (tSer == myQ.ElementAt(i))
{
checkQueue = false;
break;
}
else
checkQueue = true;
}
if (checkQueue)
myQ.Enqueue(tSer);
}
}
}
这段代码第一次运行得很好,但其他时候仍然会一次又一次地从tempServices添加到队列中。相同图元的放样,我只想添加不同的图元例如(不要看示例类型)
临时服务__队列
1-2-3___1-2-3
1-2-3-4____1-2-3-4
2-4-6___1-2-3-4-6
7______1-2-3-4-6-7
这个代码有什么问题?谢谢
您可以使用Queue<T>.Contains
方法检查队列中是否已经存在某个项,如果该项具有类似项,则返回'true',否则返回'false'。这将使您可以自由选择是否将项目排入队列。请记住,此方法使用队列中值的类型T
的默认相等比较器EqualityComparer<T>.Default
来确定相等。请查看此链接以获取示例代码。