我需要能够在将对象添加到Queue<Delegate>
时触发事件。C#:将对象添加到队列时触发事件
我创建的延伸Queue
一个新的类:
public delegate void ChangedEventHandler(object sender, EventArgs e);
public class QueueWithChange<Delegate> : Queue<Delegate>
{
public event ChangedEventHandler Changed;
protected virtual void OnChanged(EventArgs e) {
if (Changed != null)
{
Changed(this, e);
}
}
}
,然后从另一个类中,像这样的附接的情况下:
QueueWithChange<TimerDelegate> eventQueue = new QueueWithChange<TimerDelegate>();
//
eventQueue.Changed += new ChangedEventHandler(delegate(object s, EventArgs ex) {
//This event is not being triggered, so this code is unreachable atm...and that is my problem
if (eventQueue.Count > 0)
{
eventQueue.Dequeue().Invoke(new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(5) });
actionTimer.Stop();
}
});
但每当我排队的对象(eventQueue.Enqueue(something)
),附加的事件没有被解雇。
我在这里错过了什么?
优秀;这正是我正在寻找的。感谢马克的质量答案。我还会检查你提到的Threaded Queue。 – 2009-02-10 08:34:58