[C#] Contrôler les méthodes abonnées à un évènement

Contrôler les méthodes abonnées à un évènement [C#] - C#/.NET managed - Programmation

Marsh Posté le 06-05-2007 à 15:56:24    

Bonjour,
 
Je voudrais savoir s'il était possible de savoir, via du code C#, si telle ou telle méthode est abonnée à tel ou tel évènement.
Pour être un poil plus concret, j'aimerais abonner une méthode à un évènement à un moment bien précis de l'execution de mon code, mais uniquement si cette méthode n'est pas déja abonnée à cet évènement (auquel cas elle s'execute 2 fois lorsque l'évènement se produit, ce que je ne souhaite pas). Comment faire ?
 
Merci d'avance  :jap:

Reply

Marsh Posté le 06-05-2007 à 15:56:24   

Reply

Marsh Posté le 08-05-2007 à 11:32:36    

L'évènement en question n'est pas un évènement que j'ai défini moi-même mais il s'agit de l'évènement DocumentCompleted du composant WebBrowser.
 
Je souhaiterais faire :

Code :
  1. if ( /* La méthode AddToHistory n'est pas abonnée à l'évènement myWebBrowser.DocumentCompleted */ )
  2.     myWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(AddToHistory);


 
Que mettre dans ce if ?
 
EDIT:
Problème résolu: Je désabonne la méthode (ce qui ne leve pas d'exception si elle n'est pas déjà abonnée) et je la réabonne tout de suite après.


Message édité par mcyrb le 08-05-2007 à 13:07:50
Reply

Marsh Posté le 08-05-2007 à 17:15:46    

mcyrb a écrit :

Bonjour,
 
Je voudrais savoir s'il était possible de savoir, via du code C#, si telle ou telle méthode est abonnée à tel ou tel évènement.
Pour être un poil plus concret, j'aimerais abonner une méthode à un évènement à un moment bien précis de l'execution de mon code, mais uniquement si cette méthode n'est pas déja abonnée à cet évènement (auquel cas elle s'execute 2 fois lorsque l'évènement se produit, ce que je ne souhaite pas). Comment faire ?
 
Merci d'avance  :jap:


Code :
  1. if (myWebBrowser.DocumentCompleted == null) {
  2.   // pas de handler associé à l'event DocumentCompleted
  3. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed