2012-09-26 36 views
5

Tôi đã thêm một tham chiếu trong dự án Visual Studio vào một số thư viện COM. Bây giờ khi tôi tạo và đối tượng trong một phương pháp, sẽ được đối tượng COM này tự động phát hành khi chương trình lá phương pháp đó? Hoặc tôi có nên tự giải phóng các vật thể này theo cách thủ công không? (ReleaseComObject hoặc FinalReleaseComObject?).Phát hành các đối tượng COM

+1

Có nhiều về vấn đề này [ở đây] (http://stackoverflow.com/questions/1827059/why-use-finalreleasecomobject-instead-of-releasecomobject) – StuartLC

+1

Dành thời gian để điều tra và kiên nhẫn vì các bài viết đều khó khăn và nhàm chán, chẳng hạn như http: // blogs.msdn.com/b/visualstudio/archive/2010/03/01/marshal-releasecomobject-considered-dangerous.aspx –

Trả lời

3

Nó chắc chắn không thực hiện tự động, và trong một số trường hợp nó có thể nguy hiểm để làm như vậy (bằng cách gọi Marshal.ReleaseComObject) as described in this blog post.

Đối với đối tượng COM trong trường hợp, thường không cần phải giải phóng đối tượng COM.

Đối với đối tượng COM bên ngoài, có thể là quan trọng để giải phóng chúng, để ngăn chặn các sự cố như Office apps failing to shut down after automation from a .NET client.

Trong trường hợp này, tôi muốn làm theo những lời khuyên trong bài viết trên blog liên kết ở trên:

Nếu bạn đang sử dụng một đối tượng COM trong một cách đơn luồng chỉnh phạm vi sau đó bạn có thể yên tâm gọi ReleaseComObject vào đó khi bạn hoàn thành nó.

Nhưng nếu bạn đang sử dụng một đối tượng COM từ nhiều địa điểm hoặc nhiều chủ đề trong ứng dụng của bạn (hoặc từ các ứng dụng khác trong quá trình tương tự), bạn không nên gọi ReleaseComObject

Các vấn đề liên quan