Reputation: 5884
I added a reference in a Visual Studio project to some COM library. Now when I create and object in a method, will be this COM object automatically released when program leaves that method? Or should I always release these objects manually? (ReleaseComObject or FinalReleaseComObject?).
Upvotes: 5
Views: 1727
Reputation: 124696
It's certainly not done automatically, and in some cases it can be dangerous to do so (by calling Marshal.ReleaseComObject
) as described in this blog post.
For In-Proc COM objects, there's often no need to release COM objects at all.
For Out-Proc COM objects, it can be important to release them, to prevent problems such as Office apps failing to shut down after automation from a .NET client.
In this case, I'd follow the advice in the above linked blog post:
If you are using a COM object in a scoped, single-threaded manner then you can safely call ReleaseComObject on that object when you are done with it.
But if you are using a COM object from multiple places or multiple threads in your application (or from other applications in the same process), you should not call ReleaseComObject
Upvotes: 3
Reputation: 5994
You can use Marshal.ReleaseComObject: http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.marshal.releasecomobject.aspx
Upvotes: 2