में जोड़ा जाने पर किसी ईवेंट को ट्रिगर करना, जब भी किसी ऑब्जेक्ट को Queue<Delegate>
में जोड़ा जाता है तो मुझे किसी ईवेंट को ट्रिगर करने में सक्षम होना चाहिए।सी #: किसी ऑब्जेक्ट को कतार
मैं एक नया वर्ग है कि 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();
}
});
लेकिन जब भी मैं एक वस्तु enqueue (eventQueue.Enqueue(something)
), संलग्न घटना को निकाल दिया नहीं जा रहा है।
मुझे यहां क्या याद आ रही है?
उत्कृष्ट; यही वह है जिसकी तलाश में मैं हूं। गुणवत्ता के जवाब के लिए धन्यवाद मार्क। और मैं आपके द्वारा उल्लिखित थ्रेडेड कतार के बारे में भी जांच करूंगा। –
ध्यान दें कि मैंने गलत तरीके से बेस-क्लास सेट किया है; कोड में तय ... –
एक डिजाइन सिद्धांत परिप्रेक्ष्य से विरासत (व्यापक रूप से बोलने) पर संरचना का उपयोग करना बेहतर है, इसलिए मैं आपके समाधान का समर्थन करता हूं। – uriDium