Autre interrogation ! Là un poil plus tordu...
J'ai donc une dll ActiveX chargée dans une page web via la balise object. Cette dll possede un timer et utilise donc les api createTimer et killTimer.
Il y a donc une instance de la classe public pour que la procedure callback du timer puisse acceder a la classe et appeller une fonction (friend).
Probleme, quand je quitte le browser, le process reste en memoire (memory leak) et le thread occupé par la dll n'est pas libéré. Je le vois par rapport au serveur avec lequel discute la dll, le message de fin de communication ne vient que quand je kill le process de IE.
Je suspecte donc un probleme de reference circulaire à cause du timer. Tant que l'instance dont il a besoin pour acceder à la classe n'est pas supprimé, le Class_Terminate n'est pas appellé, et donc les objets en cours ne sont pas supprimé et la connection au serveur reste ouverte.
Du moins c'est la theorie, je ne sais pas si c'est la cause reelle de ce memory leak...
Je me pause donc la question, comment informer l'objet que le container va etre fermer ? Dans le cas d'un changement de page, je pense pouvoir me debrouiller avec un "onUnload" dans l'html. Mais je ne sais pas si cet evenement est levé à la fermeture du browser ?