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?).
Puede usar Marshal.ReleaseComObject: http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.marshal.releasecomobject.aspx
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