En cours de développement d'une DLL de connecteur au centre de qualité HP. J'utilise leur API COM (insert expelative) pour se connecter au serveur. Un wrapper Interop est créé automatiquement par VStudio.Le projet Visual Studio reste "bloqué" à l'arrêt
Ma solution a 2 projets: la DLL et une application testeur - essentiellement une forme avec des boutons qui appellent des fonctions dans la DLL. Tout fonctionne bien - je peux créer des défauts, les mettre à jour et les supprimer. Lorsque je ferme le formulaire principal, l'application s'arrête bien.
Mais quand j'appelle une fonction qui retourne une liste de tous les projets disponibles (pour remplir une liste déroulante), si je ferme le formulaire principal, VStudio montre toujours la solution comme étant en cours d'exécution et je dois l'arrêter.
J'ai réussi à identifier une seule fonction dans mon code que quand je l'appelle, la solution reste « accroché » et si je ne le fais pas, il ferme bien. Il est un appel à une propriété dans l'objet TDC get_VisibleProjects
qui retourne une List
(pas le .Net un, mais un type dans la bibliothèque COM) - Je viens itérer dessus et retourner une liste appropriée (que j'utiliser plus tard pour remplir le combo boîte):
public List<string> GetAvailableProjects()
{
List<string> projects = new List<string>();
foreach (string project in this.tdc.get_VisibleProjects(qcDomain))
{
projects.Add(project);
}
return projects;
}
Mon hypothèse est que quelque chose est retenu en mémoire. Si je lance l'EXE en dehors de VStudio, il se ferme - mais qui sait ce qui reste en mémoire?
Ma question est: comment puis-je me débarrasser de l'appel de cette propriété? Le GC ne devrait-il pas gérer cela? Ai-je besoin de plonger dans les pointeurs?
choses que j'ai essayé:
- obtenir la liste dans une variable et le mettre à zéro à la fin de la fonction
- Ajout d'un destructor à la classe et l'objet
tdc
annulant - En passant par l'application de la fonction de testeur à fond, lorsque le formulaire se ferme et que la fonction Main se termine, elle se ferme, mais VStudio indique toujours que je cours.
Merci pour votre aide!
[Quand et comment utiliser Dispose et Finaliser en C#] (http: //www.devx.com/dotnet/article/33167/1954) –
Merci pour le lien - Je suis au courant et essayé - ne fonctionne pas :( –
Je n'ai pas de réponse, mais +1 pour une question joliment bien formulée –