apocalypse
apocalypse

Reputation: 5884

Releasing COM objects

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

Answers (2)

to StackOverflow
to StackOverflow

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

Related Questions