COM-Objekte haben normalerweise eine deterministische Zerstörung: Sie werden freigegeben, wenn die letzte Referenz freigegeben wird.C# + COM Interop, deterministische Freigabe
Wie wird dies in C# - COM Interop behandelt? Die Klassen implementieren IDisposable
nicht, so sehe ich keine Möglichkeit, eine explizite IUnknown :: Release auszulösen.
Ein zufälliger Test zeigt, dass nicht referenzierte COM-Objekte träge gesammelt werden (d. H. Der Garbage Collector löst die Freigabe aus). Was muss ich für OCM-Objekte tun, die aggressiv veröffentlicht werden müssen? (z.B. das Halten großer oder gemeinsamer kritischer Ressourcen)?
Ursprüngliches Problem: Wir haben eine C# -Anwendung, die stark eine COM-Bibliothek verwendet, und es leckt wie verrückt. Es scheint, dass die Probleme "zwischen" dem C++ - und dem C# -Code liegen (wir haben Zugriff auf beide), aber wir können es nicht finden.
+1, denn dies ist mein Leben gerettet als einmal. – OregonGhost