Problemas Específicos de .NET
La Automatización revisa el uso de objetos y no permitirá que ninguno de ellos se destruya hasta que ya no estén siendo utilizados.
Como se establece en el tema de Interfaz de Automatización, si su controlador de automatización fue escrito utilizando el marco de trabajo .NET, Enterprise Architect no se cierra incluso después de que le suelte todas sus referencias. Para forzar el lanzamiento de los punteros COM, llame a las funciones de administración de memoria como se muestra abajo:
GC.Collect();
GC.WaitForPendingFinalizers();
Además, ya que los clientes de automatización se engancha en Enterprise Architect, que crea Add-Ins que a su vez se enganchan devuelta a Enterprise Architect, es posible entrar en una situación de bloqueo donde Enterprise Architect y los Add-Ins no se van a soltar y se mantienen mutuamente activos. Un Add-In podría retener ganchos hacia Enterprise Architect ya que:
•
|
Mantiene una referencia privada en un objeto de Enterprise Architect (vea Guardar Información de Estado arriba), o
|
•
|
Ha sido creado por .NET y el mecanismo GC no ha alcanzado a lanzarlo
|
Hay dos acciones requeridas para evitar situaciones de bloqueo:
•
|
Los Controles de Automatización deben llamar Repository.CloseAddins() en algún punto (presumiblemente al final del procesamiento)
|
•
|
Los Add-Ins deben lanzar todas las referencias a Enterprise Architect en el evento Disconnect(); vea el tema Eventos Add-In para detalles
|
Es posible que su cliente de Automatización controle una instancia en ejecución de Enterprise Architect donde los Add-Ins no han compilado con la regla de arriba. En este caso podría llamar Repository.Exit() para finalizar Enterprise Architect.
Misceláneo
Al desarrollar Add-Ins utilizando el marco de trabajo .Net debe seleccionar la Interoperabilidad COM en las propiedades del proyecto para que pueda ser reconocido como un Add-In.
Algunos entornos de desarrollo no registran COM DLLs automáticamente cuando se cran. Puede que tenga que hacerlo manualmente antes de que Enterprise Architect reconozca el Add-In.
Puede utilizar su clave de Add-In privada (como es requerido para el despliegue del Add-In) para almacenar información de configuración pertinente a su Add-In.
|