Cerrar Paquetes cargados dinámicamente, desde el paquete.
Estoy cargando dinámicamente un paquete BPL desde un ejecutable (Aplicación MDI) de la siguiente forma:
El detalle está en que le asigno al evento OnClose, le asigno la función "LiberaBPL", la cuál lo único que hace es liberar el paquete de la siguiente forma:
Si le doy click al botón cerrar de la barra de título (la tachita roja), se ejecuta el evento OnClose desde la aplicación que lo carga (MDI) y se libera el paquete si problemas: Es decir: MDI -> OnClose -> LiberarBPL -> Regresa al MDI Pero si dentro del BPL pongo un botón "Cerrar" con la instrucción "Close", el evento OnClose se manda llamar desde el mismo BPL y me genera un error de memoría, porque pasada la línea "UnloadPackage", intenta regresar al BPL, pero este ya fue liberado; Es decir: BPL -> OnClose -> LiberarBPL -> Regresa al BPL - Error de memoria Puedo hacer, en lugar de la instrucción "Close", poner la instrucción "Free" y el BPL se libera, pero no se libera en la aplicación MDI (nunca ejecuta el OnClose -> LiberarBPL). Así que mi pregunta es: ¿Como puedo cerrar y liberar el paquete, desde el mismo paquete? Cualquier idea, orientación o comentario es bienvenido. |
Igual me equivoco, pero quien debe cerrar el paquete es quien lo cargó. Bueno yo así lo hago. mi forma carga el paquete, invoca las clases y descarga el paquete.
|
Si cargara los paquetes de forma Modal, al cerrar el paquete se descargaría. Pero no los muestro de forma modal, el BPL es un formulario hijo "MDICHild", por lo que desconozco en que momento el usuario cierra el formulario. Y sí, quien lo descarga es quien lo carga, el punto es que si desde el BPL mando llamar la función para liberar el paquete, al final trata de regresar al BPL, pero como ya se liberó, entonces me marca error de memoría.
|
Cita:
Es decir, si el formulario es modal, se liberará al cerrarlo (caFree), pero eso no quiere decir que el paquete se descargue. Creo que intentar descargar el paquete desde el mismo paquete sólo te va a dar problemas. En todo caso puedes hacer un "Gestor de paquetes", que "vigile" cuantos formulario de un paquete hay cargados y cuando no quede ninguno abierto te los descargue automáticamente. De la misma forma y ampliando un poco más, ese mismo gestor se puede encargar de cargarlos automáticamente cuando necesites un formulario de un paquete... |
Cita:
Cita:
Cita:
Y creo que sí empezaré a ver como realizamos un "gestor" como mencionas. |
La franja horaria es GMT +2. Ahora son las 01:14:46. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi