Các đối tượng COM thường có sự hủy diệt xác định: chúng được giải phóng khi tham chiếu cuối cùng được giải phóng.C# + COM Interop, xác định phát hành
Cách này được xử lý trong C# - COM Interop? Các lớp không thực hiện IDisposable
, vì vậy tôi thấy không có cách nào để kích hoạt một IUnknown :: Release.
Một thử nghiệm bình thường cho thấy rằng các đối tượng COM không được quan tâm được thu thập một cách lười biếng (tức là bộ thu gom rác đang kích hoạt bản phát hành). Tôi nên làm gì cho các đối tượng OCM cần được giải phóng một cách hăng hái? (ví dụ: nắm giữ các tài nguyên quan trọng lớn hoặc được chia sẻ)?
Vấn đề ban đầu: Chúng tôi có một ứng dụng C# sử dụng rất nhiều thư viện COM, và nó bị rò rỉ như điên. Có vẻ như các vấn đề là "giữa" C++ và mã C# (chúng ta có quyền truy cập vào cả hai), nhưng chúng ta không thể đinh nó xuống.
+1, bởi vì đây đã cứu sống tôi nhiều hơn một lần. – OregonGhost