如何管理队列

本文关键字:队列 管理 何管理 | 更新日期: 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来确定相等。请查看此链接以获取示例代码。