|
Hola RobertPolson.
No he revisado tu código, porque no lo colocaste como indicó Casimiro Notevi en la primera respuesta, pero de todas formas no estoy seguro de que necesites crear un hilo para lo que deseas conseguir.
Creo que podrías usar un par de variables "bandera" (tipo Boolean). La primera para indicar si en ese momento se está ejecutando un cálculo, y la segunda para indicar si se ha presionado otro botón durante un proceso de cálculo que no ha terminado.
La clave está en que durante el proceso de cálculo llames a Application.ProcessMessages cada cierto tiempo o varias veces entre las instrucciones de tu cálculo para darle oportunidad al usuario de interactuar con la pantalla aunque no haya terminado de realizarse dicho cálculo. La acción de presionar un botón evaluaría la primera de las variables que te mencioné, que de ser True, pondría en True la otra de las variables y dejaría en "cola de espera" la tarea de ese botón. Mientras que el proceso de cálculo, después de cada llamada a ProcessMessages revisaría si esta segunda variable está en True y por lo tanto determinaría si debe abandonar el cálculo dependiendo de cuál botón se haya presionado durante el proceso.
Espero haberme dado a entender. Saludos.
Última edición por Al González fecha: 07-09-2020 a las 02:27:27.
|