J'ai une DLL VB6 intégrée dans certaines pages ASP. La DLL rencontre une base de données Codebase, un moteur de base de données obsolète et obsolète (un dialecte/variation sur dBase) dont pratiquement personne n'a entendu parler. Il faut près d'une seconde à Codebase pour initialiser une nouvelle connexion, ce qui est inacceptable et j'ai donc créé un pool de connexions, géré par une classe VB. La seule instance de cette classe est créée au début d'un module VB, i.e. .:Réinitialisation inattendue des variables déclarées dans le module DLL VB6
Private m_codebaseManager As New CodebaseManager
Mon problème est que périodiquement la méthode d'initialisation de classe est appelée à nouveau démolition complètement ma classe de mise en commun et je n'ai aucune idée pourquoi. Terminate ne se déclenche pas et il n'y a aucun signe de crash, alors pourquoi diable est-il appelé? Ma compréhension est que les données dans les modules non-classe persistent pour la durée de vie de la DLL. Est-ce correct et si non, dans quelles circonstances un module redémarre-t-il?
Vous pouvez créer une fonction Register() dans le module et l'appeler depuis Class_Initialize des classes que vous exposez dans votre DLL. Dans la fonction Register(), utilisez quelque chose comme Si non m_codebaseManager est rien alors Set m_codebaseManager = New CodebaseManager Vous pouvez également coller un point d'arrêt sur Class_Initialize dans votre classe CodebaseManager et vous devriez voir exactement où les instances supplémentaires sont créés . –