如何管理队列?

时间:2013-12-17 12:22:14

标签: c# queue

首先抱歉我的英文,希望你理解。 我有一个计时器来更新一个' object [] [] tempServices'每1 Sn并发送到下面的功能 我想要做的是将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一次又一次地添加到队列中。相同元素的阁楼,我只想添加不同的元素 例如 (不要看示例类型)

tempServices ___ queue

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

此代码有什么问题? 感谢..

1 个答案:

答案 0 :(得分:0)

您可以使用Queue<T>.Contains方法检查某个项目是否已存在于队列中,如果项目类似,则返回“true”,否则返回“false”。这样可以自由选择是否将项目排入队列。请记住,此方法使用EqualityComparer<T>.Default的默认相等比较器T确定相等性,{{1}}是队列中值的类型。查看this链接以获取示例代码。