मैं एक ईवेंट को एक सहायक समारोह में पास करने के लिए देख रहा हूं। यह फ़ंक्शन ईवेंट के लिए एक विधि संलग्न करेगा। हालांकि, मुझे घटना को ठीक से गुजरने में परेशानी हो रही है। मैंने EventHandler<TEventArgs>
पास करने का प्रयास किया है। यह संकलित करता है, लेकिन घटनाएं संलग्न नहीं होती हैं (लेकिन अभी भी जोड़े गए हैं; ऐसा लगता है कि इवेंट हैंडलर की एक प्रति बनाई गई है)।मैं सी # में किसी फ़ंक्शन में कोई ईवेंट कैसे पास कर सकता हूं?
उदाहरण के लिए, अगर मैं इस:
public event EventHandler<EventArgs> MyEvent;
और सहायक समारोह:
public static void MyHelperFunction<TEventArgs>(EventHandler<TEventArgs> eventToAttachTo)
{
eventToAttachTo += (sender, e) => { Console.WriteLine("Hello world"); };
}
और फोन करने वाले:
MyHelperFunction(MyEvent);
MyEvent(null, new EventArgs()); // Does nothing.
@Strager: क्या आप इसका उपयोग करने के तरीके के बारे में बताते हुए थोड़ा सा विस्तार करेंगे? मैंने यह सवाल बहुत रोचक पाया लेकिन मुझे उपयोग के मामले को देखने में कठिनाई हो रही है। –
@ जॉन फेमिनेला, मैं कुछ सहायक कार्यों का निर्माण कर रहा था, और एक सिंक्रनाइज़ रूप से एक घटना की प्रतीक्षा करता है। वे मुख्य रूप से मेरे नेटवर्किंग वर्गों (जो असीमित रूप से संचालित होते हैं) में कई WaitFor विधियों (उदा। प्रतीक्षाफोर कनेक्ट) के लिए कोड पुन: उपयोग को कम करने के लिए उपयोग किए जाते हैं। – strager