Bonjour à tous,

J'ai un problème avec un service Windows qui utilisent une DLL COM VB6 référencé dans la solution.

Le service est un planificateur qui exécute des tâches. Chaque tâche est exécutée dans un thread donc il permet aux utilisateurs de lancer plusieurs tâches simultanément.

Quand un thread démarre, une instance d'une classe de la DLL VB6 (nommé C_AUTO) est créé en C # (var ... = new C_AUTO). Le constructeur de cette classe crée d'autres instances de classes présentes dans le même dll et dans d'autres dll. Lorsque la tâche est terminée, le destructeur de C_AUTO détruit tous les autres objets (set ... = nothing). l'instance de C_AUTO créé en c# est aussi détruit.

Mon problème, c'est lorsque le service doit effectuer une autre tâche, un autre thread est créé et une autre instance de C_AUTO avec. J'ai ajouté un bout de code pour écrire dans un fichier la valeur des pointeurs mémoire et ces valeurs sont les mêmes que pour la tâche précédente.

Y at-il une autre façon de charger une DLL VB6 sans la syntaxe "New" et qui me permette de décharger tous les objets lorsque la tâche est terminée ? Parce que, après quelques jours, le service consomme une grande quantité de mémoire et des tâches plantent. J'ai des messages d'erreur sur des lignes de code qui crée des instances (set monObjet = New ...). Le message d'erreur indique "Erreur Automation Espace insuffisant pour traiter cette commande". Cela arrive quand toute la mémoire du serveur est occupée et mon service peut monter jusqu'à 1,5 Go de ram.

Je remercie par avance pour votre aide.