2010-10-30 11 views
26

Asumiendo que han declarado¿Cómo contar cuántos oyentes están conectados a un evento?

public event EventArgs<SyslogMessageEventArgs> MessageReceived; 

public int SubscribedClients 
{ 
    get [...] 
} 

me gustaría contar cuántas "suscrito clientes" mi clase tiene. Necesito sumar los que se suscribieron a través de la red a través de mis API (no se muestran en el fragmento) más los que hicieron channel.MessageReceived+=myMethod;.

Sé que los eventos C# pueden declararse explícitamente con add y remove declaraciones, y allí seguramente puedo contar + o -1 con un contador local, pero nunca escribí código para eventos explícitos en C#, así que no saber exactamente qué más realizar en agregar y eliminar en lugar de actualizar el contador.

Gracias.

Respuesta

53
MessageReceived.GetInvocationList().Length 
+16

Es mejor que añada una prueba nula. –

+2

No es necesario realizar una prueba nula si se inicializa el evento con un delegado vacío. Sin embargo, la longitud del recuento será 1. evento público EventArgs MessageReceived = delegate {}; –

Cuestiones relacionadas