如何创建/使用'非通用队列'

时间:2014-02-06 13:00:51

标签: c# data-structures queue

我目前正在使用标准队列。不幸的是,我也想知道什么时候项目被排队和出队,我无法用通用队列(队列)来做这件事。

根据这里的另一个线程,我需要一个'非泛型队列',所以我能够覆盖入队和出队方法,以便可以使用事件处理程序。

请注意我已经查看了可观察的集合,我需要的是一个可观察的队列'就像'数据结构。

如何创建此“非通用队列”?

它是图书馆的一部分吗?

感谢。

2 个答案:

答案 0 :(得分:4)

你在谈论这个Queue

是的,Enqueue和Dequeue方法都是虚拟的,所以你可以覆盖它们并做类似的事情:

public class ObservableQueue : Queue
{
    public event EventHandler<QueueChangedArgs> OnChanged;

    public override void Enqueue(object obj)
    {
        base.Enqueue(obj);
        if (OnChanged != null)
            OnChanged(this, new QueueChangedArgs(obj, QueueEventType.ItemEnqueued));
    }
}

public enum QueueEventType { ItemEnqueued, ItemDequeued }
public class QueueChangedArgs : EventArgs
{
    public object Item { get; private set; }
    public QueueEventType EventType { get; private set; }

    public QueueChangedArgs(object item, QueueEventType type)
    {
        Item = item;
        EventType = type;
    }
}

答案 1 :(得分:0)

  

如何创建这个“非通用队列”?

     

它是图书馆的一部分吗?

你应该在mscorlib.dll中添加它的基类名称空间

using System.Collections;