Estoy desarrollando una aplicación que depende en gran medida de varios productos de Microsoft Office, incluidos Access, Excel, Word, PowerPoint y Outlook, entre otros. Mientras hacía investigación sobre interoperabilidad descubrí que comenzando con VS2010 y .NET 4, afortunadamente ya no tenemos que pasar por las pesadillas de los PIA.Eliminación correcta de objetos de interoperabilidad COM en C# particularmente aplicaciones de MS Office
Además, he estado leyendo muchos artículos sobre la eliminación adecuada de objetos, el más sensato parecía ser this uno.
Sin embargo, el artículo tiene 5 años y no hay muchas publicaciones autorizadas sobre el tema AFAIK. Este es un ejemplo de código desde el enlace de arriba:
' Cleanup:
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
Marshal.FinalReleaseComObject(worksheet)
oWB.Close(SaveChanges:=False)
Marshal.FinalReleaseComObject(workbook)
oApp.Quit()
Marshal.FinalReleaseComObject(application)
Lo que yo quiero saber es para los estándares de hoy en día, cómo es exacto es esto y qué debo mirar hacia fuera para si espero para apoyar mi solicitud para los próximos ¿años?
ACTUALIZACIÓN: Un enlace a algunos artículos creíbles sería muy apreciado. Por cierto, esta no es una aplicación del lado del servidor. Esto se ejecutará en los laboratorios de computación donde los usuarios interactúan con los productos de oficina que creamos para ellos.
ENCONTRÓ IT:This artículo de tres partes es probablemente el más cercano a una cuenta autorizada que esperaría encontrar.
¿Por qué necesita liberar los objetos mientras se ejecuta su aplicación? La aplicación de Office se cerrará cuando finalice su aplicación. – adrianm
Sí, soy consciente de que se realizará un GC correcto después de la descarga del dominio de la aplicación. Sin embargo, mi escenario es niehter una aplicación del lado del servidor ni una aplicación de cliente única. Es un poco una mezcla donde necesito asegurarme de que las instancias abiertas se hayan cerrado correctamente antes de acomodar al siguiente usuario. –
Sobre un tema similar: http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects/159419#159419 – rkagerer