du designer en VS Disons que vous double cliquez sur un bouton et génère ce gestionnaire d'événements de clic. p>
Le code d'abonnement est dans le concepteur.cs. p>
Je me demandais, dans le formulaire, je dois me désabonner l'événement? P>
En outre, tout contrôle sous la forme sera-t-il disposé lorsque les formulaires disposent? Il appelle effectivement éliminer chaque contrôle récursivement? p>
3 Réponses :
Vous n'avez pas besoin de décrocher l'événement sur le dispositif si vous accrochez votre propre événement. P>
Il vous suffit d'inquiéter à ce sujet si vous accrochez un événement dans un autre objet. La raison en est que les crochets d'événement conservent une référence à l'abonné. Si vous échouez à décrocher, vous n'obtiendrez pas les ordures recueillies tant que l'observable est toujours en vie. P>
Lorsque vous accrochez votre propre événement, vous avez une référence à vous-même, qui est circulaire, donc vous n'avez pas besoin de vous en soucier. P>
Je suis venu soutenir des modèles d'événements plus lâchés pour cette raison. C'est la place n ° 1 pour les fuites de mémoire dans .NET. Je préfère le Agrégateur d'événement motif (avec événements faibles ). P>
Merci pour l'excellente explication. Fait un sens idéal pour ne pas décrocher quand vous vous accrochez à vous-même.
Tant que le code du gestionnaire d'événements est le formulaire lui-même, vous n'avez pas besoin de vous désabonner des événements - car il n'y aurait pas de gestionnaire d'événements pendling aux commandes que la forme elle-même serait la destruction p>
sur la question "appellera-t-il réellement éliminer à chaque contrôle de manière récursive?", la réponse est oui.
Un test simple peut être effectué en mettant un point d'arrêt dans la méthode d'élimination d'un contrôle. P> < Pré> xxx pré> p>