Comment et quand sont c# Static membres éliminés?

J'ai une classe avec de nombreuses membres statiques, certains de ceux qui gardent les références aux gérés et non gérés objets.

Par exemple, le constructeur statique est appelée dès que le Type est référencé, ce qui provoque ma classe de spin un blockingQueue de Tâches. Cela se produit lorsque l'une des méthodes statiques est appelé, par exemple.

J'ai mis en place IDisposable, ce qui me donne des méthodes pour gérer disposition sur toute instance objets que j'ai créé. Cependant, ces méthodes ne sont jamais appelés, si le consommateur ne crée pas des objets d'instance de ma classe.

Comment et où dois-je mettre le code de disposer de références maintenu par la partie statique de ma classe? J'ai toujours pensé que l'élimination de l'électricité statique ressources référencées qui s'est passé lors de la dernière instance de l'objet a été publié; c'est la première fois que j'ai jamais créé une classe où aucune instance ne peut jamais être créé.

  • Des éléments statiques sont disponibles pour l'ensemble de l'exécution de l'application. Vous ne créez pas d'éléments statiques en utilisant le NOUVEAU mot-clé, donc cela signifie que vous n'avez pas plusieurs instances de quoi que ce soit, car vous n'avez pas instancier quoi que ce soit. Sur les objets gérés, ne vous inquiétez pas à ce sujet, l'GC de prendre soin d'eux. À propos de ressources non managées, essayez de les utiliser dans un non statique de la classe, ou ils seront conservés jusqu'à ce que vous fermez votre application. Des éléments statiques ne supportent pas la jeter.
  • Merci. Semble que j'ai besoin de revoir ma conception ici.
InformationsquelleAutor Joe | 2012-08-25