Ich habe eine COM-Komponente in nicht verwaltetem C++ geschrieben, um Kunden Zugriff auf unsere Datenbank zu ermöglichen. Bei Verwendung einer nicht verwalteten Sprache werden die Datenbankverbindungen korrekt bereinigt, da die Objekte den Gültigkeitsbereich verlassen. Ich habe vor kurzem versucht, es aus VB.NET zu verwenden und festgestellt, dass die COM-Objekte nicht zerstört werden. Streuung Aufrufe an System.Runtime.InteropServices.Marshal.ReleaseComObject behebt das Problem, aber ich möchte eine einfachere und Ausnahme sichere Lösung finden, da dieses COM-Objekt für den Kunden gedacht ist.So implementieren Sie Dispose in einem COM-Objekt
Es scheint, dass die richtige Lösung die verwalteten Objekte implementieren IDisposeable so die mit Anweisung haben, ist automatisch verwendet werden können, Entsorgen aufrufen, wenn das Objekt nicht erforderlich ist, länger.
Wie gehe ich bei der Implementierung von IDisposeable für eine Teilmenge meiner Objekte vor? Einige der Objekte, die entsorgt werden müssen, sind nicht kopierbar, werden aber von anderen Funktionen zurückgegeben.
Vielleicht ist meine Antwort auf diese Frage (http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop -Objekte-in-c/158752 # 158752) hilft bei Ihrem spezifischen Fall. – VVS