| Usuario |
por favorayuda |
Desconocido
|
| Enviado - 8/5/2003 |
| |
Hola a todos!!
Alguien podrías ayudarme con lo siguiente:
Acabo de hacer un proyecto el cual es un ejecutable,
éste proyecto en sí es el menú principal.
Desde éste programa (Exe) ejecuto varias dll's, cada una de las
dll's corresponden a algo en particular. Por ejemplo, una dll
de Catalogo, una dll de Ventas... y así hay una serie de dll´s
que yo puedo ejecutar dependiendo de los privilegos de cada usuario.
Pues bien, el problema que tengo en
éstos momentos es que cuando yo entro
al Menú principal llevó acabo la conexión
a la Base de Datos (SQL). Cuando yo ejecuto
o bien deseo accesar a una X pantalla la cual
está incluída en cualquiera de las dll's antes
mencionadas, lo que hago es heredarle la conexión
que traigo desde que accese al sistema, es decir,
la que traigo en el menú principal.
Cuando yo salgo del o de los procesos que ejecute (de la dll)
y posteriormente salgo completamente del sistema
(Salir del ejecutable), no se cierra completamente la aplicación,
se queda colgado algo por allí... yo pienso que se quedan colgadas las pantallas a las cuales accese, es decir,
a las dll's. He tratado de verificar como llevar acabo la terminación total
de éstas pero si la termino por completo como que la conexión que fue heredada
se pierde y después si deseo hace o accesar a
otra pantalla (de la misma dll o de otra) me envia mensaje de que la
conexión no está activa. ¿Alguien podría ayudarme en decirme como cerrar la dll cuando termino de utilizarla tratando de no cerrar la conexión heredada?
Muchas gracias...
Saludos! |
| |
|
Desconocido
|
| Enviado - 19/5/2003 |
| |
Cuando tu haces referencia a una dll debes crear una variable objeto creo que tu problema reside o bien que no destruyes las variables objetos o que pierdes referencia a las dll
en tu lugar trataria de ver si destruyo bien las dll referenciadas, no te olvides que cuando tu creas un objeto y destruyes el objeto que le hizo la referencia pero no el objeto referenciado este queda cargado en memoria y no puede acceder a el para destruirlo y por ende te ocupa dicho espacio de memoria y como la memoria es un recurso limitado llega un punto en que se te termina y se clava el sistema.
si en dichas dll accedes a una base de datos que tambien es un ojeto debes destruilo sino tambien te ocupa memoria y como perdiste el puntero o referencia a dicho objeto no podras destruirlo, el la ayuda que biene con visula te dice como se destruye e inician objetos
ej:
hago referencia
*seccion general
dim miclase as clasedll
creo el objeto
private sub form1_load()
set miclase=new tipoclasedll
end sub
destruyo la referencia y el objetro creado
private sub form1_unload()
set miclase=nothing
end sub
*seccion general
dim midatabase as datadase
dim mirecorset as recorset
creo el objeto
private sub form1_load()
set midatabase=opendatabase("base de datos")
set mirecorset=midatabase.openrecorset("tabla o sql")
with mirecorset
....
....
....
....
end with
*Cierro la tabla y la base de datos pero no *esta destruida la referncia
mirecorset.close
midatabase.close
end sub
destruyo la referencia y el objetro creado
private sub form1_unload()
set mirecorset=nothing
set midatabase=nothing
end sub
no olvides que cerrar una base de datos no es lo mismo que destruir la referencia a ella
cualquier duda escrivime a [email protected] |
| |
|
|
|