Ich habe eine Klasse in C# geschrieben, die als Wrapper um eine COM-Komponente fungiert. Die COM-Komponente ist früh gebunden und der RCW wurde von Visual Studio generiert. Sollte ich ein displace-Muster in meiner Wrapper-Klasse implementieren, um die COM-Referenz zu bereinigen, oder sollte ich es einfach dem GC überlassen, da es bereits eine RCW hat?Muss eine Wrapperklasse, die eine COM-Komponente über C# aufruft, das Dispose-Muster implementieren?
Q
Muss eine Wrapperklasse, die eine COM-Komponente über C# aufruft, das Dispose-Muster implementieren?
5
A
Antwort
4
Es gibt selten eine müssen entsorgen implementieren, aber es gibt oft gute Gründe, dies zu tun.
Wenn das COM-Objekt eine wichtige Ressource darstellt, die schnell freigegeben werden muss, kann dies ein guter Grund sein, Dispose zu implementieren.
In Ihrer dispose-Methode können Sie tun: -
System.Runtime.InteropServices.Marshal.ReleaseComObject(myRCW);
Daher Entsorgung Ihre Klasse wird sofort das COM-Objekt freigeben.
Das lässt mich fragen, warum die RCW nicht das Dispose-Muster implementiert, scheint es das Richtige zu tun. – vmb100