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?).Liberación de objetos COM
Respuesta
Ciertamente no se hace de forma automática, y en algunos casos puede ser peligroso hacerlo (llamando Marshal.ReleaseComObject
) as described in this blog post.
Para los objetos COM en Proc, a menudo no es necesario liberar objetos COM en absoluto.
Para los objetos COM Out-Proc, puede ser importante liberarlos, para evitar problemas como Office apps failing to shut down after automation from a .NET client.
En este caso, me gustaría seguir los consejos en el blog vinculado anteriormente:
Si está utilizando un objeto COM de manera restringidos, de un solo subproceso entonces se puede llamar de forma segura en ese ReleaseComObject objeto cuando haya terminado con él.
Pero si está utilizando un objeto COM desde múltiples lugares o varios subprocesos en su aplicación (o de otras aplicaciones en el mismo proceso), no debe llamar ReleaseComObject
Puede utilizar Marshal.ReleaseComObject: http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.marshal.releasecomobject.aspx
- 1. Liberación de objetos COM temporales
- 2. Liberación de pista del objeto com C#.
- 3. Liberación de "propiedad" del objeto COM en .NET
- 4. Convirtiendo objetos de auto-liberación a ARC
- 5. Uso de objetos COM en aplicaciones MetroStyle
- 6. Cómo liberar objetos COM en Silverlight 4
- 7. C# .Net4: objetos COM (dinámicos) correctamente desechables
- 8. ¿Cómo puedo destruir objetos COM en C#?
- 9. Reflexión sobre la interoperabilidad COM objetos
- 10. Pasando la matriz C# de objetos COM a VB6
- 11. Cómo inspeccionar objetos COM del archivo volcado de Visual Basic?
- 12. método Invoke Reflexión sobre el uso de objetos COM
- 13. Bloqueo extraño al depurar el destructor de objetos COM
- 14. Three.js - memoria de liberación
- 15. consejos al usar objetos COM/CComPtr y el TEL
- 16. ¿Los objetos COM dinámicos se consideran recursos administrados?
- 17. Propiedades de liberación de Maven
- 18. ¿Liberación de contenido de NSMutableDictionary?
- 19. Delegados: ¿retener o asignar liberación?
- 20. ¿Llamar 'liberación' muchas veces?
- 21. Configuraciones de depuración y liberación
- 22. Diferencia entre "COM" tradicional y COM + (en servicios de componentes)
- 23. ¿Usar la liberación automática antes de agregar objetos a una colección?
- 24. ¿Se necesita realmente la liberación de objetos en la salida del programa?
- 25. Soporte D para COM
- 26. Registrar para interoperabilidad COM
- 27. COM, COM +, DCOM, ¿por dónde empezar?
- 28. autofac en la liberación v2.4.5.724
- 29. Directrices de recuento de referencia de interoperabilidad COM
- 30. C# + COM Interop, versión determinística
Hay más en esta [aquí] (http://stackoverflow.com/questions/1827059/why-use-finalreleasecomobject-instead-of-releasecomobject) – StuartLC
Ahorre tiempo para investigar, y sea paciente ya que los artículos son difíciles y aburridos, como http: // blogs.msdn.com/b/visualstudio/archive/2010/03/01/marshal-releasecomobject-considered-dangerous.aspx –