Suppression de tous les gestionnaires d'événements en une seule fois

Problème: j'ai une classe de document qui contient une liste d'objets. Ces objets de déclencher des événements tels que SolutionExpired, DisplayExpired etc. Le document doit répondre à cette question.

Documents peuvent parfois échanger des objets, mais un seul objet ne doit jamais être une partie de plus d'un document.

Ma classe de document contient un ensemble de méthodes qui servent de gestionnaires d'événements. Chaque fois qu'un objet entre dans le document, j'utilise AddHandler pour configurer les événements, et chaque fois qu'un objet est supprimé du document j'utilise RemoveHandler pour réparer les dégâts. Cependant, il y a des cas où il est difficile de s'assurer que toutes les étapes sont correctement pris et je peut donc se retrouver avec rogue gestionnaires d'événements.

Longue histoire courte; comment puis-je supprimer tous les gestionnaires qui sont pointant sur une méthode spécifique? Remarque, je n'ai pas une liste de sources d'événements, ceux-ci pourraient être stockées n'importe où.

Quelque chose comme:

RemoveHandler *.SolutionExpired, AddressOf DefObj_SolutionExpired

OriginalL'auteur David Rutten | 2009-07-19