Quisiera me indicaran la forma en que puedo cancelar una función que se esta ya ejecutando en mi programa. Para poner un ejemplo, cuando usamos el Buscar de Archivos de Windows (FIND) y procedemos a efectuar una búsqueda, podemos cancelar la búsqueda, oprimiendo el Botón Cancelar. Quisiera saber como es que se logra esta cancelación de la función.
1 respuesta
Respuesta de leosoft
1
1
leosoft, Programacion Avanzada en VisualBasic, trabajo hace mas de 15 años...
Para cancelar la ejecución de alguna función que puede demandar tiempo, lo que tienes que hacer es trabajar en un modo multiarea, cuando haces una rutina de carga de datos, dibujar en pantalla o cualquier función que haga que tu maquina quede esperando hasta que termine, tienes que escribir esa función con un loop abierto como lo es Do While, nunca utilizar un For Next por ejemplo: Coloca un botón en un form con el siguiente código Command1_click() For x = 1 To 100000 Step 0.1 Form1.PSet (x, 10), QBColor(12) Next End Sub Esto te va a dibujar una linea en el form, pero hasta que termine no vas a podes hacer nada. Ahora lo vamoa a hacer con Do While coloca 2 botones en un form y pone Dim Cancelar as Boolean en el procedimiento General Command1_click() Cancelar = False Do While Not Cancelar = True Form1.PSet (x, 10), QBColor(12) x = x + 0.1 if x= 100000 then Cancelar = True DoEvents Loop End Sub en el otro boton pone Command2_Click() Cancelar = True End Sub Ahora al apretar el segundo botón cancela la ejecución del primer botón, la instruccio DoEvents dentro de Do While le entrega el comando a Windows para responder a otro requerimiento del usuario o de otro programa. Espero lo puedas utilizar en tu función, el único inconveniente es que es un poco más lenta la ejecucuin de la función, pero bueno, windows esta haciendo varias cosas a la vez, eso es multitarea. Cualquier duda estoy a tu disposición.