Cancelación de funciones en ejecución

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
1
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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas