Visual Basic - Cerrar Aplicacion

Life is soft - evento anual de software empresarial
 
Vista:

Cerrar Aplicacion

Publicado por Anahis (42 intervenciones) el 17/09/2004 21:43:50
Hola a todos como hago para cerrar una aplicacion hecha en vb 6.0. Cuando el usuario sale del sistema algunas veces queda como grabado en memoria. Yo lo cierro con End. Y le tengo programado q cuando el sistema este abierto no le permita al usuario volverlo a ejecutar; entonces esto me ha creado problemas x q c tiene q reiniciar la maquina lo q ocaciona perdida d tiempo. X q dice q el sistema ya esta en ejecucion y no es cierto solo q quedo grabado en memoria o no c

Gracias d Antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cerrar Aplicacion

Publicado por Ruri (583 intervenciones) el 18/09/2004 03:31:32
Anahis:
Nunca en esta, ni en otra vida utilices la instrucción END para finalizar un programa. Es un error común, lo he visto en libros muy serios, pero es un error. La instrucción End es heredada de QBasic, junto con instrucciones cono goto gosub, put, get, print y otras. Debería utilizarse sólo cuando se quiere salir de un programa sin formularios y luego de descargar hasta el último objeto. El hecho es que sale de la función sin terminar nada, deja todo en memoria sin posibilidar de acceder a ella de nuevo, al menos no sin utilizar el API. Te paso una nota que está en el MSDN acerca de la instrucción END, está en la ayuda de la instrucción y es una de esas notas que nadie lee:

"Nota La instrucción End detiene la ejecución bruscamente, sin llama a los eventos Unload, QueryUnload o Terminate, o cualquier otro código Visual Basic. El código que ha colocado en los eventos Unload, QueryUnload y Terminate de losformularios ymódulos de clase no se ejecuta. Se destruyen los objetos creados desde módulo de clase, se cierran los archivos abiertos utilizando el método Open y se libera la memoria utilizada por el programa. Se invalidan las referencias de objetos mantenidas por otros programas. "

"La instrucción End proporciona una manera de forzar la detención de un programa. Para la finalización normal de un programa Visual Basic, debe descargar todos los formularios. El programa se cierra en cuanto no haya otros programas que mantienen referencias a objetos creados en los módulos de clase públicos y se ejecute ningún código."

Resumiendo, para finalizar una aplicación, cerrás hasta el último formulario, vacias todas las imágenes en controles picturebos e image, cerrás todas las bases de datos, eliminas todos los objetos y el programa se cierra solo.

Saludos Ruri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cerrar Aplicacion

Publicado por Dante (72 intervenciones) el 18/09/2004 04:22:04
Esto pasa generalmente cuando pones el código de salida que tu has planeado como el correcto en un botón o en una opción del menú y esperas que el usuario siempre salga por allí, pero de repente este sale dando clic a la X de cerrar el formulario.
Para evitar esto, el código apropiado lo debes poner en el evento unload del formulario.

Si puedes utilizar el END sin los problemas que indica Ruri, ya que nada queda en memoria, mira que en el mismo escrito que el te envió indica que todo se cierra
"Se destruyen los objetos creados desde módulo de clase, se cierran los archivos abiertos utilizando el método Open y se libera la memoria utilizada por el programa. Se invalidan las referencias de objetos mantenidas por otros programas. "
En otras palabras, no queda nada activo y puedes reentrar al programa sin problemas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cerrar Aplicacion

Publicado por Ruri (583 intervenciones) el 18/09/2004 05:09:39
Dante: Dante no te ofendas, pero END deja todo tirado en memoria, es uno de los bugs más viejos de VB. Basta hacer puebas que midan la diferencia de memoria utilizar antes y después de abrir y cerrar el programa con END. Visual cierra casi todo, pero no todo. Eso lo sabe cualquiera que trabaje en programación COM.

Saludos Ruri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cerrar Aplicacion

Publicado por Anahis (42 intervenciones) el 20/09/2004 14:59:14
Muchas gracias a los dos por la explicacion, sera q si lo cierro con unload me estas bien???. Como hago para programar el boton X del formulario y q al presionar este ejecute el ulnload me

Gracias d nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cerrar Aplicacion

Publicado por Ruri (583 intervenciones) el 20/09/2004 17:19:01
Presionar X es equivalkente a efectuar un Unload Me. El único cuidado que debñés tener es ser prolija al cerrar el formulario, asegurándote de cerrar bien todos los objetos y bases de datos, para ello utilizá el evento Queryunload que se produce justo antes de cerrar el formulario. Unload me se utiliza cuando tenés un procedimiento de salida. En general yo hago lo siguiente. Coloco un botón o menú que permite salir, que ejecuta sólo la instrucción UnloadMe. Luego, coloco el código que cierra lso objetos y las bases de datos en QueryUnload. De esta manera, no importa como se salga, siempre puedo cerrar bien cada formulario.

Si tenés más dudas escribime a mi correo (No suelo regresar más de una o dos páginas en el foro)

Saludos Ruri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar