El más horrible que recuerdo haber escrito (que realmente funcionó) fue un contenedor para los objetos de interoperabilidad de Microsoft Office en .Net.
No estoy seguro de si es cierto ya que no he usado interops de Office durante un tiempo, pero solía ser que si usaba uno de los objetos COM (cualquier cosa sobre el documento de Office podría ser uno, una sección en Word , una celda o rango en Excel, lo que sea que tenga) y no lo liberó explícitamente , la llamada para cerrar el documento sería ignorada silenciosamente ya que todavía había un identificador abierto para ese recurso. El recolector de basura no pudo liberarlos ya que usaron código no administrado. Nuestro programa usó con frecuencia la automatización de Office en la computadora del usuario, por lo que esto resultó, por ejemplo, en dejar varias copias “fantasmas” de esos recursos abiertas si lo usaban mucho. No muy bien.
Mi solución para eso fue, esencialmente, escribir un “recolector de basura” que reemplazara la instanciación normal y el proceso de cierre de esos recursos. Se aseguró de que cuando se cerró la hoja, todos los recursos aún abiertos en ella se desarmaron y se liberaron primero.
- ¿Qué debo hacer para hacer la transición a un trabajo de desarrollo de software?
- ¿Qué tan importante es la universidad si quiero ser desarrollador de software?
- ¿Algún buen consejo para mi primer trabajo y días como desarrollador de software Junior?
- ¿Existe una habilidad técnica que pueda adquirir solo si trabaja en Microsoft?
- Cómo convertirse en desarrollador web / software
Era un poco feo y hacky, pero funcionó . Los documentos fantasmas simplemente desaparecieron. No más problemas con eso en absoluto.