Postby ddupre » Wed May 13, 2020 8:35 pm
Ignacio,
He seguido su ejemplo y aún no he logrado detener el proceso, tal vez sea porque la lógica del mio no es exactamente igual a la del suyo.
Lo particular de mi proceso es que durante el loop, se van mostrando una ProgressBar y un RichEdit con la información de lo que va sucediendo.
Lo otro que tiene de particular es que el comienzo del loop se puede dar por dos motivos, uno porque se lo llama en el evento OnClick de un botón (Iniciar) y dos por un timer que espera 10 segundos antes de ejecutarlo una vez que emieza a correr la aplicación.
Siguiendo su recomendación, cuando la aplicación comienza, aparece des habilitado el boton Detener (en cuyo evento OnClick puse la instrucción ::lStop := .T.) y una linea antes del comienzo del loop, invierto el estado de los dos botones, el oIniciar:lEnable := .F. y oDetener:lEnable := .T., pero lo que sucede es que dicho cambio se da cuando termina el loop, lo que me deja totalmente confundido.
Le agradezco desde ya por la ayuda.
Un saludo
Daniel
Este es el código:
METHOD BtnIniciarClick( oSender ) CLASS TForm1
::Comenzar( oSender )
RETURN Nil
//------------------------------------------------------------------------------
METHOD BtnDetenerClick( oSender ) CLASS TForm1
::lStop := .T.
RETURN Nil
//------------------------------------------------------------------------------
METHOD Comenzar( oSender ) CLASS TForm1
::oBtnAceptar:lEnabled := .F.
::oBtnCancelar:lEnabled := .T.
::oTimer1:lEnabled := .F.
::lWorking := .T.
::ProcesoPrecios()
::ProcesoStock()
::lWorking := .F.
RETURN Nil
//------------------------------------------------------------------------------