Dois-je toujours débrancher de gestionnaires d'événements dans la méthode dispose?

Je travaille en C# et mon lieu de travail a certaines normes du code. L'un d'eux est que chaque gestionnaire d'événement nous connecter (comme KeyDown) doit être déconnecté de l' Dispose méthode. Est-il une bonne raison pour que?

  • Il a certainement un sens si les événements sont static, parce que sinon, le gestionnaire de référence serviront à la racine de l'objet et de prévenir la GC.
  • Cela ressemble à un cas où quelqu'un a eu une fuite de mémoire causées par ailleurs un code incorrect, fait remonter le problème à un gestionnaire d'événements de fuite, et a décidé d'écrire et de faire respecter un code standard, que tous les gestionnaires d'événements doit être déconnecté de l' Dispose méthode. En d'autres termes, au lieu de réellement le travail consiste à comprendre ce qui a causé le problème dans ce cas précis, ils ont décidé de faire plus de travail pour tout le monde everafter. Un pervers de la forme de la cargaison-culte de la programmation, à l'exception d'un seul, le boss peut infliger.
  • Ne sais pas comment dans les dernières versions de .NET, mais sur la 2.0 et 3.5, nous avions fait des problèmes sur le non événement statique abonnements, whe utilisation massive amounf des objets, ou fréquemment utilisées. Semblait comme si que GC n'était pas en mesure de comprendre les liens morts et la mémoire des pompes. Répéter, n'ont pas une preuve scientifique, mais certains monde réel pratiquer, s'est réuni et a confirmé également par les autres membres de la communauté.
  • vous avez absolument raison, il y avait fuite de mémoire juste avant qu'ils ont commencé l'application de cette norme
  • Outre l'échec lamentable de .NET languages pour en faciliter l'utilisation, est-il une raison pourquoi les cas de désinscription ne devrait pas être fait comme une question de cours? Si par exemple un contrôle souscrit à certains événements de la mère et de ne pas annuler l'inscription, que le contrôle est en supposant que le nombre d'instances qui seront créés au cours du parent à la durée de vie sera limitée. Si un parent périodiquement crée et détruit des contrôles enfants, qui pourrait entraîner une surabondance de fuite de mémoire. La manipulation de l'événement de nettoyage constante devrait être plus facile que d'essayer d'identifier les cas qui ne manquera pas sans elle.