Página 1 de 1

Romper ejecución un script con un sleep

Publicado: 10 Oct 2012, 17:13
por quinux
Hola a todos,

Estoy realizando un script que realiza una tarea cada cierto tiempo. Para ello tengo el siguiente código:
Opt("TrayMenuMode",1)

$gSalir = TrayCreateItem("Salir")

TraySetState()

While 1
$msg = TrayGetMsg()
Select
Case $msg = $gSalir
ExitLoop
case Else
pEnvioMail($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
Sleep(300000)

EndSelect
WEnd
GUIDelete()
Exit

El caso esque cuando selecciono salir del menú desplegable, el programa no me hace ni caso. ¿ qué hago mal?

Re: Romper ejecución un script con un sleep

Publicado: 13 Oct 2012, 20:06
por Chefito
La orden sleep detiene totalmente la ejecución del programa. Por eso, hagas lo que hagas no te va a obedecer.
Prueba a utilizar la función AdlibRegister para repetir una acción cada cierto tiempo. Es lo más facil. Mírala en la ayuda.

Saludos.

Re: Romper ejecución un script con un sleep

Publicado: 13 Dic 2012, 10:15
por quinux
Gracias, probaré esto y el consejo de ximorro

Re: Romper ejecución un script con un sleep

Publicado: 13 Dic 2012, 12:26
por Ximorro
Bueno depende de lo que quieras hacer, si lo que quieres es cerrar el programa es mejor la otra opción porque interrumpirá en cuanto le des a la combinación de teclas.
Si lo que quieres es comprobar algo cada cierto tiempo entonces lo bueno es la solución de Chefito.

De todas maneras bloquear un GUI como haces no es buena idea, da "mala imagen" al usuario porque el GUI no le responde y parece que se pierde el control de la aplicación, que hay que cerrar abruptamente.

La función GUIGetMsg es bloqueante y hace que el programa consuma muy poca CPU cuando está en el bucle de comprobación de eventos, puedes comprobarlo en el administrador de tareas por ejemplo. Así que no haría falta ponerle un Sleep si lo que te preocupa es la CPU.

Para programar tareas cada cierto tiempo usa el AdlibRegister, pero sin el Sleep.

Re: Romper ejecución un script con un sleep

Publicado: 13 Dic 2012, 14:12
por quinux
La solución de Chefitos me ha venido de perlas, MUCHAS GRACIAS. Da gusto que te respondan con rapideza y seguridad. :smt041 :smt041 :smt041 :smt041
Gracias a ti también ximorro por tus consejos :smt041 :smt041 :smt041 :smt041 :smt041 :smt041