2010-10-30 17 views
26

Supponendo ho dichiaratoCome contare quanti ascoltatori sono collegati a un evento?

public event EventArgs<SyslogMessageEventArgs> MessageReceived; 

public int SubscribedClients 
{ 
    get [...] 
} 

vorrei contare quanti "sottoscritto clienti" la mia classe ha. Ho bisogno di sommare quelli che sono iscritti su rete attraverso le mie API (non mostrati nel frammento) più quelli che hanno fatto channel.MessageReceived+=myMethod;.

So che C# eventi possono essere dichiarati in modo esplicito con add e remove dichiarazioni, e non vi posso sicuramente contare + o -1 a un contatore locale, ma non ho mai scritto il codice per gli eventi espliciti in C#, quindi non lo faccio sapere esattamente che altro eseguire su aggiungere e rimuovere piuttosto che aggiornare il contatore.

Grazie.

risposta

53
MessageReceived.GetInvocationList().Length 
+16

È consigliabile aggiungere un test Null. –

+2

Non è necessario eseguire un test Null se si inizializza l'evento con un delegato vuoto. Tuttavia, la lunghezza del conteggio sarà 1. evento pubblico EventArgs MessageReceived = delegate {}; –

Problemi correlati