我目前正在使用标准队列。不幸的是,我也想知道什么时候项目被排队和出队,我无法用通用队列(队列)来做这件事。
根据这里的另一个线程,我需要一个'非泛型队列',所以我能够覆盖入队和出队方法,以便可以使用事件处理程序。
请注意我已经查看了可观察的集合,我需要的是一个可观察的队列'就像'数据结构。
如何创建此“非通用队列”?
它是图书馆的一部分吗?
感谢。
答案 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;