Bonjour à tous,
Je vais tâcher d'expliquer clairement mon problème.
J'ai un service windows développé en Delphi qui inspecte une table.
Quand il y trouve une ligne, il lance une Dll (développée aussi en Delphi) qui utilise les données pour imprimer une édition Crystal. Une fois l'édition terminée, le service libère la dll et attend la prochaine ligne.
Mon problème étant que le service qui lance la dll ne meurt pas, et pire, son process monte à 100% de CPU. J'ai pu tracer que c'est au FreeLibrary(dll) que mon service se plante...
Quelques explications subsidiaires :
J'ai migré cette Dll d'une connexion SQLinks vers ODBC, en utilisant le même composant BDE : TDataBase. Je précise cela car avec SQLinks, je n'ai pas de souci. Je n'ai le problème qu'avec une version de cette dll qui passe par l'ODBC.
Mes pistes envisagées :
Les 2 versions de Dll sont vraiment quasi identique, en tout cas dans leur fermeture, rien n'a changé. L'une fonctionne et pas l'autre.
Je pense donc que c'est vraiment liée à l'ODBC, ce qui empêche le service de libérer la dll correctement...
Quelques détails sur mon environnement :
dll et service développé en Delphi 5
Base de données : Informix
Driver de connexion fourni par OLEDB
Plateforme Windows 2008 server
Que dire de plus ? J'espère avoir été clair.
Partager