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
Trả lời
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
Bạn có thể sử dụng Marshal.ReleaseComObject: http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.marshal.releasecomobject.aspx
- 1. Phát hành đối tượng COM trong C#
- 2. Phát hành "quyền sở hữu" đối tượng COM trong .NET
- 3. Theo dõi bản phát hành của đối tượng com C#.
- 4. C# + COM Interop, xác định phát hành
- 5. Cách phát hành đối tượng COM Server inprocess từ Excel VBA
- 6. Đối tượng COM Azure
- 7. System.Runtime.Caching không phát hành BitmapImage đối tượng
- 8. Khi nào phát hành đối tượng NSUrlConnection
- 9. Khả năng tương thích .NET và COM: phát hành COM từ máy khách .NET
- 10. Khám phá đối tượng COM trong PHP
- 11. Đối tượng Com trong Java, có thể?
- 12. Visual Studio 2010 64-bit COM Interop Số phát hành
- 13. Làm gián điệp trên các đối tượng COM
- 14. Reflection on COM Interop đối tượng
- 15. Đối tượng hoạt ảnh lõi iOS không phát hành
- 16. Tự động phát hành hai lần một đối tượng
- 17. Khi nào một đối tượng có 'autorelease' được phát hành?
- 18. có thực hiện xóa bỏ các bản phát hành các đối tượng của scrollview không?
- 19. Cách kiểm tra đối tượng phụ thuộc COM trong C#
- 20. Sử dụng các đối tượng COM trong các ứng dụng MetroStyle
- 21. API Hook trên một hàm đối tượng COM?
- 22. Làm thế nào tôi có thể phát hiện tất cả các giao diện một đối tượng COM thực hiện?
- 23. Làm thế nào để phát hành các đối tượng HybridHttpOrThreadLocalScoped trong StructureMap?
- 24. Làm thế nào để có được loại đối tượng COM
- 25. Vượt qua mảng C# của đối tượng COM vào VB6
- 26. Tai nạn lạ khi gỡ lỗi đối tượng COM destructor
- 27. Đối tượng COM này có bị thu gom rác không?
- 28. Tôi có thể sớm phát hành một đối tượng tự động phát hiện không?
- 29. Scala: các đối tượng đồng hành và từ khóa "mới"
- 30. COM + kích hoạt đối tượng trong một phân vùng khác
Có nhiều về vấn đề này [ở đây] (http://stackoverflow.com/questions/1827059/why-use-finalreleasecomobject-instead-of-releasecomobject) – StuartLC
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 –