Je suis confus par la syntaxe de suppression des gestionnaires d'événements en C#.Syntaxe de suppression d'événement C#
Something += new MyHandler(HandleSomething); // add
Something -= new MyHandler(HandleSomething); // remove
Le « nouveau » crée un nouvel objet sur chaque ligne, de sorte que vous ajoutez un objet puis demandez de supprimer un objet différent.
Que se passe-t-il vraiment sous les couvertures pour que cela fonctionne?
Ce n'est pas évident à cause de la syntaxe.
La suppression d'un objet recherche dans la liste des délégués un objet correspondant à la cible et à la méthode de l'objet donné, puis supprime ce dernier. –
vous ne devez pas utiliser le nouveau MyHandler, c'est juste un emballage pour un délégué. –
Les réponses à cette discussion: http://stackoverflow.com/questions/1178725/how-to-unset-event ont aussi quelques discussions sur le sujet. – JeffH