Question

Je suis actuellement en utilisant un délégué statique dans une classe wrapper pour une dll C pour éviter que le délégué, ce qui indique une fonction non sûre, obtient garbaged collectées.
Ce fonctionnait très bien jusqu'à ce que j'ai maintenant l'obligation de prendre en charge plusieurs instances de la classe. Une solution pourrait être de garder une liste des délégués statiques, mais je voudrais trouver une solution plus simple.

Était-ce utile?

La solution

Pour garder un objet d'être collectés, vous devez maintenir une référence.

Les membres statiques dans les classes statiques vivent pour la vie de l'application.

Pour les membres de la classe par exemple, en fonction de la conception de votre classe et la conception du projet, vous pouvez prendre différentes approches. Le maintien d'une liste statique ne peut pas être une mauvaise idée.

Ma seule question est de savoir comment êtes-vous en mesure de comprendre que le délégué est recueilli. Parce que, si vous êtes en mesure d'y accéder, vous devez avoir maintenu une référence de celui-ci. Dans ce cas, il a dû rester dans la mémoire.

Autres conseils

Je pense que vous avez fait une erreur: les variables statiques vie dans l'ensemble du cycle de vie de l'application, ils ne seront jamais GCed lorsque l'application est en cours d'exécution

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top