J'ai une application qui s'exécute en continu, elle crée et détruit des classes dont certaines ont des événements comme des événements de clic de souris et autres ... Première question est de savoir comment se désinscrire? Si l'abonnent ressemble à ceci:C# .NET événement approprié abonnement et désabonnement
Panel1.MouseClick += new MouseEventHandler(Action_MouseClick);
est-il bon pour vous désabonner comme ceci:
Panel1.MouseClick -= new MouseEventHandler(Action_MouseClick);
OU est-il autorisé à le faire:
Panel1.MouseClick -= Action_MouseClick;
ou est de toute façon ok?
Mon autre question est la suivante: Si j'utilise le studio Microsoft Visual C# pour créer les événements via le concepteur, est-il automatiquement désabonné dans le cadre de la méthode 'Dispose'? Ou dois-je encore mettre la méthode de désinscription dans le code?
Merci qstarin ... J'ai remarqué que le programme va lentement fuir la mémoire et je me demande si la classe a été correctement éliminée si je ne me désabonne pas de certains des événements qui sont définis par le concepteur, ce qui signifie double-cliquant sur Un bouton dans le concepteur créera l'événement buttonClick. Mais je n'ai pas été abonné à ces événements. Selon l'article: « http://msdn.microsoft.com/en-us/library/ms366768%28VS.80%29.aspx » Im se demandant si le garbage collector supprime l'objet du tas si je n'ai pas été abonné à ces événements. – ecklerpa
Dans cet article, "Tant que l'objet de publication contient cette référence, votre objet abonné ne sera pas collecté." Un contrôle sur le formulaire est l'objet de publication.La seule référence au contrôle est sa variable membre dans le formulaire (généralement le cas, sauf si vous maintenez une référence au contrôle en particulier). Toutes les références sont inaccessibles et doivent être collectées –
Sinon, en guise de vérification de cohérence, je pense que si le concepteur s'est automagiquement abonné, mais n'a pas automagiquement désinscription, et qui a causé une fuite de mémoire, alors beaucoup d'applications .Net auraient ce problème - et, peut-être évidemment, ce n'est pas le cas (ou nous en entendrions parler plus, oui) –