¿Es seguro llamar a un RCW desde un finalizador?

Tengo un objeto administrado que llama a un servidor COM para asignar algo de memoria. El objeto administrado debe volver a llamar al servidor COM para liberar esa memoria antes de que desaparezca el objeto administrado para evitar una pérdida de memoria. Este objeto implementa.IDisposable para ayudar a garantizar que se realice la llamada COM de liberación de memoria correcta.

En el caso de que elDispose método esno Llamado, me gustaría que el finalizador del objeto libere la memoria. El problema es que las reglas de finalización es que no debe acceder a ninguna referencia porque no sabe qué otros objetos ya han sido GC y / o finalizados antes que usted. Esto deja el único estado de objeto que se puede tocar para que sea campos (los controles son los más comunes).

Pero llamar a un servidor COM implica pasar por un envoltorio que se puede cerrar en tiempo de ejecución (RCW) para liberar la memoria que tengo para almacenar una cookie en un campo.¿Es seguro llamar a RCW desde un finalizador (se garantiza que no se ha completado ni finalizado por GC en este momento)?

Para aquellos de ustedes que no están familiarizados con la finalización, aunque el subproceso finalizador se ejecuta en el fondo de un dominio de aplicación administrado mientras se está ejecutando, en los casos en que tocar las referencias sería teóricamente correcto, la finalización también ocurre en el cierre de la aplicación, yen cualquier orden - No solo en el orden de relación de referencia. Esto limita lo que puede asumir que es seguro tocar desde su finalizador. Cualquier referencia a un objeto administrado puede ser "mala" (memoria recopilada) aunque la referencia no sea nula.

Actualizar: Lo probé y obtuve esto:

Se produjo una excepción no controlada de tipo 'System.Runtime.InteropServices.InvalidComObjectException' en myassembly.dll

Información adicional: no se puede utilizar el objeto COM que se ha separado de su RCW subyacente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta