跟小D每日学口语

c#: Enqueued event for Queue<T>

You can encapsulate the Queue class with your own class, something like:

class MyQueue<T>
{
private readonly Queue<T> queue = new Queue<T>();
public event EventHandler Enqueued;
protected virtual void OnEnqueued()
{
if (Enqueued != null)
Enqueued(this, EventArgs e);
}
public virtual void Enqueue(T item)
{
queue.Enqueue(item);
OnEnqueued();
}
public int Count
{
get
{
return queue.Count;
}
}
public virtual T Dequeue()
{
T item = queue.Dequeue();
OnEnqueued();
return item;
}
}
HTH!

posted @ 2012-09-28 11:15  Danny Chen  阅读(336)  评论(0编辑  收藏  举报