【问题标题】:How to create / use a 'Non Generic Queue'如何创建/使用“非通用队列”
【发布时间】:2014-03-03 10:45:02
【问题描述】:

我目前正在使用标准队列。不幸的是,我还想知道项目何时入队和出队,而我无法使用通用队列(队列)来做到这一点。

根据此处的另一个线程,我需要一个“非通用队列”,因此我能够覆盖入队和出队方法,以便可以使用事件处理程序。

请注意,我查看了可观察集合,我需要的是可观察队列“类似”数据结构。

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

它是图书馆的一部分吗?

谢谢。

【问题讨论】:

  • 您能否粘贴一些示例代码,以便我们获得更好的上下文?
  • 为什么不直接封装队列?

标签: c# data-structures queue


【解决方案1】:

你在谈论这个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;
    }
}

【讨论】:

  • 谢谢,这正是我想要的。
【解决方案2】:

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

它是图书馆的一部分吗?

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

using System.Collections;

【讨论】:

    猜你喜欢
    • 2019-02-28
    • 2023-04-04
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多