Existe-t-il un moyen d'obtenir le nombre de gestionnaires d'événements attachés à un événement? Le problème est que quelque part dans le code, il continue à attacher des gestionnaires à un événement, comment cela peut-il être résolu?Gestionnaires d'événements C#
4
A
Répondre
10
Il est possible d'obtenir une liste de tous les abonnés en appelant GetInvocationList()
public class Foo
{
public int GetSubscriberCount()
{
var count = 0;
var eventHandler = this.CustomEvent;
if(eventHandler != null)
{
count = eventHandler.GetInvocationList().Length;
}
return count;
}
public event EventHandler CustomEvent;
}
0
Vous pouvez implémenter votre propre événement ajouter/supprimer des méthodes:
private EventHandler _event;
public event EventHandler MyEvent
{
add
{
if (_event == null) _event = value;
_event += value;
}
remove
{
if (_event != null) _event -= value;
}
}
0
Vous pouvez remplacer le add- et de supprimer - opération (+ = et - =) pour l'événement comme vu dans le code suivant:
private int count = 0;
public event EventHandler MyEvent {
add {
count++;
// TODO: store event receiver
}
remove {
count--;
// TODO: remove event receiver
}
}