2012-09-26 11 views
5

Bazı COM kitaplığına Visual Studio projesinde bir başvuru ekledim. Şimdi bir yöntem oluşturduğumda ve nesne oluşturduğumda, program bu yöntemi terk ettiğinde bu COM nesnesi otomatik olarak serbest bırakılacak mı? Yoksa bu nesneleri her zaman el ile serbest bırakmalı mıyım? (ReleaseComOject veya FinalReleaseComObject?).COM nesnelerini serbest bırakma

+1

Bu konuda daha fazla olduğunu çağırmamalıdır [buradan] (http://stackoverflow.com/questions/1827059/why-use-finalreleasecomobject-instead-of-releasecomobject) – StuartLC

+1

Makaleleri araştırmak ve sabırlı olmak için biraz zaman ayırın. blogs.msdn.com/b/visualstudio/archive/2010/03/01/marshal-releasecomobject-considered-dangerous.aspx –

cevap

3

Kesinlikle otomatik bitmedi ve bazı durumlarda as described in this blog post (Marshal.ReleaseComObject çağırarak) bunu tehlikeli olabilir.

In-Proc COM nesneleri için, genellikle COM nesnelerini serbest bırakmaya gerek yoktur.

Out-Proc COM nesneleri için

, onları serbest bırakmak için böyle Office apps failing to shut down after automation from a .NET client olarak sorunları önlemek için önemli olabilir. Bu durumda

, yukarıdaki bağlantılı blog yazısında tavsiye takip ediyorum:

sonra güvenle bu konuda ReleaseComObject çağırabilir bir Scoped, tek iş parçacıklı bir şekilde bir COM nesnesi kullanıyorsanız nesne ile işiniz bittiğinde.

Ama uygulamanızda birden fazla yerde veya birden çok iş parçacığı bir COM nesnesi kullanıyorsanız (veya aynı işlemde diğer uygulamalardan) kullanarak, ReleaseComObject