दिलचस्प पोस्ट
सिंटेक्स सहायता – ऑब्जेक्ट नाम के रूप में वैरिएबल 1046 त्रुटि कोई डेटाबेस चयनित, कैसे हल करने के लिए? SQL सर्वर प्रक्रिया कतार दौड़ शर्त सभी कम केस होने के लिए JavaScript स्ट्रिंग कन्वर्ट करें? आईई में कंटेंट की चौड़ाई कटाई के साथ ड्रॉपडाउन चुनें जावा में एक स्ट्रिंग को दोबारा उल्टा करने का सबसे अच्छा तरीका क्या है? JSF अप्रत्यक्ष बनाम स्पष्ट नेविगेशन XML नामस्थानों के साथ XPath कैसे काम करता है? PHP में निर्माण तिथि के आधार पर निर्देशिका को कैसे हटाएं? एक न्यूनतम Django फ़ाइल अपलोड की आवश्यकता है उदाहरण जब कोई डेटा मौजूद नहीं है तो पढ़ने का अमान्य प्रयास JQuery में रूपों की दोहरी प्रविष्टि रोकें वैकल्पिक वैरिएबल को प्रिंट करना Android MediaCodec के साथ कैमरे से एन्कोडिंग एच .264 कैसे विडियो स्टूडियो में विंडोज सेवाओं को डीबग करें?

इवेंटहान्डलर को पास पैरामीटर

मेरे पास निम्नलिखित MusicNote जिसमें मैंने एक पैरामीटर MusicNote संगीत जोड़ा है:

 public void PlayMusicEvent(object sender, EventArgs e,MusicNote music) { music.player.Stop(); System.Timers.Timer myTimer = (System.Timers.Timer)sender; myTimer.Stop(); } 

मुझे इस तरह एक Timer लिए हैंडलर जोड़ने की आवश्यकता है:

 myTimer.Elapsed += new ElapsedEventHandler(PlayMusicEvent(this, e, musicNote)); 

लेकिन त्रुटि प्राप्त करें:

"विधि नाम अपेक्षित"

संपादित करें: इस मामले में मैं बस उस विधि से ई पास करता हूं जिसमें यह कोड स्निपेट होता है, मैं टाइमर के अपने EventArgs कैसे पारित करूँगा?

वेब के समाधान से एकत्रित समाधान "इवेंटहान्डलर को पास पैरामीटर"

Timer.Elapsed विशिष्ट हस्ताक्षर की विधि (तर्क object और EventArgs ) की उम्मीद है। यदि आप अपने PlayMusicEvent विधि का उपयोग इवेंट पंजीकरण के दौरान मूल्यांकन किए गए अतिरिक्त तर्क के साथ करना चाहते हैं, तो आप लैम्ब्डा अभिव्यक्ति का उपयोग एडेप्टर के रूप में कर सकते हैं:

 myTimer.Elapsed += new ElapsedEventHandler((sender, e) => PlayMusicEvent(sender, e, musicNote)); 

संपादित करें: आप कम संस्करण का भी उपयोग कर सकते हैं:

 myTimer.Elapsed += (sender, e) => PlayMusicEvent(sender, e, musicNote); 

अगर मैं आपकी समस्या को ठीक से समझता हूं, तो आप इसे पैरामीटर के रूप में जाने के बजाय एक विधि बुला रहे हैं निम्न प्रयास करें:

 myTimer.Elapsed += PlayMusicEvent; 

कहा पे

 public void PlayMusicEvent(object sender, ElapsedEventArgs e) { music.player.Stop(); System.Timers.Timer myTimer = (System.Timers.Timer)sender; myTimer.Stop(); } 

लेकिन आपको यह सोचने की आवश्यकता है कि आपका नोट कहां स्टोर करना है