COM nesneleri genellikle deterministik yıkıma sahiptir: son referans bırakıldığında serbest bırakılırlar.C# + COM Etkileşim, deterministik serbestlik
Bu, C# - COM Interop'ta nasıl kullanılır? Sınıflar IDisposable
'u uygulamıyor, bu yüzden açık bir IUnknown :: Release'i tetiklemenin hiçbir yolunu göremiyorum.
Sıradan bir test, ilgisiz COM nesnelerinin tembel bir şekilde toplanacağını gösterir (yani, çöp toplayıcı serbest bırakmayı tetikliyor). Agresif olarak salınması gereken OCM nesneleri için ne yapmalıyım? (ör. büyük veya paylaşılan kritik kaynakların tutulması)?
Asıl sorun: Bir COM kütüphanesi kullanarak yoğun bir C# uygulamasına sahibiz ve deli gibi sızdırıyor. Görünüşe göre problemler C++ ve C# kodları arasında (her ikisine de erişebiliyoruz) gözüküyor, ama biz onu ezemeyiz.
+1: Tek bırakılmasını sağlayan -
İşte her düğüm noktasında değerini yakalayan, niyetimizi görüşmek üzere
Expression
ağaçları kullanan bir seçenek. – OregonGhost