C #: acionando um evento quando um objeto é adicionado a uma fila
Preciso ser capaz de disparar um evento sempre que um objeto é adicionado a umQueue<Delegate>
.
Criei uma nova classe que estendeQueue
:
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);
}
}
}
E, em seguida, anexou o evento de outra classe, como:
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();
}
});
Mas sempre que enfileirar um objeto eventQueue.Enqueue(something)
), o evento anexado não está sendo disparado.
O que estou perdendo aqui