Los objetos COM generalmente tienen destrucción determinística: se liberan cuando se lanza la última referencia.C# + COM Interop, versión determinística
¿Cómo se maneja esto en C# - COM Interop? Las clases no implementan IDisposable
, por lo que no veo forma de activar un IUnknown :: Release explícito.
Una prueba casual muestra que los objetos COM sin referencia se recopilan de forma diferida (es decir, el recolector de elementos no utilizados desencadena la publicación). ¿Qué debo hacer para los objetos OCM que necesitan ser lanzados agresivamente? (por ejemplo, tener recursos críticos grandes o compartidos)?
Problema original: Tenemos una aplicación C# usando una biblioteca COM, y está goteando como loca. Parece que los problemas están "entre" el código C++ y el código C# (tenemos acceso a ambos), pero no podemos bloquearlo.
+1, porque esto me salvó la vida más de una vez. – OregonGhost