2010-10-30 8 views
26

मानते हुए मैंकैसे गिनना है कि कितने श्रोताओं को किसी ईवेंट में लगाया जाता है?

public event EventArgs<SyslogMessageEventArgs> MessageReceived; 

public int SubscribedClients 
{ 
    get [...] 
} 

मैं गिनती करने के लिए कितने "ग्राहकों की सदस्यता ली" चाहते हैं घोषित किया है मेरी कक्षा है। मैं उन है कि नेटवर्क पर सदस्यता ली हालांकि मेरे API (टुकड़ा में नहीं दिखाया गया है) प्लस उन है कि channel.MessageReceived+=myMethod; किया योग करने के लिए की जरूरत है।

मुझे पता है कि सी # घटनाओं add और remove बयानों के साथ स्पष्ट रूप से घोषित किया जा सकता है, और वहाँ मैं निश्चित रूप से भरोसा कर सकते हैं + या -1 एक स्थानीय काउंटर करने के लिए है, लेकिन मैं कभी नहीं सी # में स्पष्ट घटनाओं के लिए कोड लिखा था, इसलिए मुझे नहीं पता काउंटर को अपडेट करने के बजाए जोड़ने और हटाने पर वास्तव में और जानें।

धन्यवाद।

उत्तर

53
MessageReceived.GetInvocationList().Length 
+16

आप बेहतर एक शून्य परीक्षण जोड़ना चाहते हैं। –

+2

किसी खाली प्रतिनिधि के साथ ईवेंट प्रारंभ करने पर शून्य परीक्षण करने की आवश्यकता नहीं है। हालांकि, गिनती की लंबाई 1. सार्वजनिक घटना EventArgs MessageReceived = प्रतिनिधि {}; –

संबंधित मुद्दे