2010-09-16 9 views
3

Am utilisant COM interop dans mon application C#.COM interop question

J'ai cette ligne de code:

IMyInterface objData = MyCOMClass.GetData(); 

Ma question est ici:

Ai-je besoin de libérer des ressources sur objData en utilisant? System.Runtime.InteropServices.Marshal.ReleaseComObject (objData);

Merci d'avoir lu.

+0

duplication possible de [Meilleure façon de nettoyer un objet COM dans une application .net] (http://stackoverflow.com/questions/3650878/best-way-to-clean -up-a-com-object-in-a-net-application) – Richard

+0

Dans cette question, je voulais savoir si un objet de type "interface" [par rapport à classe] aurait besoin d'être nettoyé aussi bien en utilisant ReleaseComObject. Par conséquent, j'ai posté une nouvelle question. Merci. – Jimmy

Répondre

2

Oui, sauf si vous pouvez attendre que le CPG le nettoie.

Pourrait être utile de noter que l'interopérabilité COM crée une référence COM par interface.

IMyInterface x = MyCOMClass.GetData(); 
IMyOtherInterface y = (IMyOtherInterface)x; 
IMyInterface z = x; 

Marshal.ReleaseComObject(x); 
Marshal.ReleaseComObject(y); 

ou Marshal.FinalReleaseComObject (x); // Si vous savez que personne d'autre ne l'utilise

+0

Merci adrianm pour votre réponse.Ceci aide. – Jimmy