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.
Verwandte Themen
- 1. C++ - Strukturobjekt, das eine Funktion aufruft
- 2. Funktion, die eine bestimmte Funktion aufruft
- 3. Membervariable, die Klasse A erweitern und eine Schnittstelle implementieren muss
- 4. C# Webservice: Webmethod, das eine async Methode aufruft, gibt das Taskoff Objekt zurück
- 5. Wie schreibe ich eine Funktion, die eine Funktion aufruft, die data.table aufruft?
- 6. C++ Wie man eine Funktion aufruft, die Vorlage verwendet
- 7. IIS-Webdienst, der die COM-DLL aufruft, die auf eine Unix-Dateifreigabe zugreifen muss
- 8. C++ - wie benutzt man das Objekt, das die Funktion aufruft?
- 9. Warum die Ajax-Methode eine Fehlerfunktion aufruft?
- 10. Klicken Sie auf das Ereignis, das eine Funktion aufruft
- 11. Das Feld muss eine Zahl
- 12. Muss ich einen Komponententest für eine Methode innerhalb der Serviceklasse schreiben, die nur eine Methode innerhalb der Repository-Klasse aufruft?
- 13. Wie man Informationen über eine Funktion erhält und sie aufruft
- 14. sp_execute_external_script eine R-Skriptdatei aufruft
- 15. Kann eine anonyme C# -Klasse eine Schnittstelle implementieren?
- 16. Test (Mocking) eine Void-Funktion, die intern andere Funktionen aufruft, die eine Verbindung zur Datenbank herstellen
- 17. Muss ich die Adjazenzmatrix mit BFS implementieren?
- 18. Ruby-Klasse mit statischer Methode, die eine private Methode aufruft?
- 19. Test, dass eine Funktion eine andere Funktion mit Mocha aufruft
- 20. Wie kann ich eine Methode schreiben, die auf das Objekt verweist, das sie aufruft?
- 21. Verwenden von setuptools zum Erstellen eines Cython-Pakets, das eine externe C-Bibliothek aufruft
- 22. Rufen Sie alle Klassen, die eine Schnittstelle implementieren
- 23. C - Ausdruck muss eine modifizierbare lvalue seines
- 24. Abrufen aller Typen, die eine Schnittstelle implementieren
- 25. Klasse Design: Klasse implementieren eine Schnittstelle implementieren eine andere Schnittstelle
- 26. Wie implementieren Sie Ereignisse über die Schnittstelle in C#?
- 27. Muss die geerbte abstrakte Methode implementieren
- 28. Astyle über eine Zeichenfolge oder eine Datei über C aufrufen #
- 29. Wie man eine Methode behandelt, die eine statische Methode aufruft, die JUnit verspottet?
- 30. Sys.InvalidOperationException: Handler muss eine Funktion
Das lässt mich fragen, warum die RCW nicht das Dispose-Muster implementiert, scheint es das Richtige zu tun. – vmb100