para office microsoft libreria interoperabilidad application c# com

office - microsoft interop c#



Liberando objetos COM (2)

Agregué una referencia en un proyecto de Visual Studio a una biblioteca COM. Ahora cuando creo y me opongo a un método, ¿se liberará automáticamente este objeto COM cuando el programa abandone ese método? ¿O debería liberar siempre estos objetos manualmente? (¿ReleaseComObject o FinalReleaseComObject?).



Ciertamente no se hace automáticamente, y en algunos casos puede ser peligroso hacerlo (llamando a Marshal.ReleaseComObject ) como se describe en esta publicación del blog .

Para los objetos COM de In-Proc, a menudo no es necesario liberar objetos COM en absoluto.

Para los objetos COM de Out-Proc, puede ser importante liberarlos para evitar problemas como las aplicaciones de Office que no se apagan después de la automatización desde un cliente .NET .

En este caso, seguiría el consejo en la publicación de blog vinculada anterior:

Si está utilizando un objeto COM en un ámbito con un único subproceso, puede llamar de manera segura a ReleaseComObject en ese objeto cuando haya terminado con él.

Pero si está utilizando un objeto COM desde múltiples lugares o múltiples hilos en su aplicación (o desde otras aplicaciones en el mismo proceso), no debe llamar a ReleaseComObject