¿Cómo puedo evitar que la interfaz de usuario parezca que cuelga mientras hago mucho tiempo para la operación de bucle?Hice una IU que permite al usuario elegir qué proceso, temperatura y voltaje incluir en el cálculo de Cpk, el script iterará sobre cada combinación de proceso, temperatura y voltaje. Me di cuenta de que la interfaz de usuario cuelga mientras está haciendo su operación. Hay alguna manera de evitar esto? Creo que una función similar a DoEvents en vb6 o mejor, ¿un trabajador de proceso en segundo plano?
ScriptingRe: ¿Cómo evito que la UI parezca que cuelga mientras hago mucho tiempo para la operación de bucle? @TheRealYeti ,
Atacaré tu pregunta desde otra dirección, tu script podría ser ineficiente. He visto guiones que tardaron horas en ejecutarse, reescritos para ejecutarse en un minuto o dos. Sin más detalles, es difícil evaluar eso.
Dado que conoce vb6, podría obtener la entrada del usuario y su script podría generar un script JSL para hacer el trabajo, pero ejecútelo a través de VB6 que usa DoEvents. No conozco esa función ni soy un experto en VB.
La "Referencia de automatización" de la documentación JMP le indica muchas de las funciones de la biblioteca JMP expuestas a VB.
Para crear una sesión JMP y hacerla visible, agregue el siguiente código a su VB
guión.
Dim MyJMP como JMP. Aplicación
Dim JMPDoc como JMP.Document
Establecer MyJMP = CreateObject ("JMP.Application")
MyJMP.Visible = True
La función de biblioteca JMP, Ejecutar JSL,
Ejecutar JSL archivo
No estoy seguro si algo de eso ayuda.
Re: ¿Cómo evito que la UI parezca que cuelga mientras hago mucho tiempo para la operación de bucle?Si está haciendo un bucle en JSL, puede agregar llamadas al subtítulo () para informar al usuario sobre el progreso.
for (i = 1, i <= 1000000, i++,
a = i*2;
b = a^i;
if (mod(i, 1000) == 0,
caption("Processing ... " || char(i));
wait(0);
);
);
caption(remove);Re: ¿Cómo evito que la UI parezca que cuelga mientras hago mucho tiempo para la operación de bucle?Si está realizando una cantidad de tareas discretas que requieren mucho tiempo, puede usar este widget de estado:
Clase de estado de actividad
Le dará al usuario el estado de progreso y forzará las actualizaciones de pantalla.
Re: ¿Cómo evito que la UI parezca que cuelga mientras hago mucho tiempo para la operación de bucle?Mi código se ejecuta en menos de un minuto. Mi preocupación es que durante el proceso, la GUI (hecha en JSL) parecería que dejó de responder. Creo que esto se debe a que el script y la GUI se ejecutan en el mismo hilo (podría estar equivocado). En VB6, agregar el comando DoEvents dentro del bucle for puede ser una solución rápida, permite que la interfaz de usuario actualice sus elementos y parezca receptiva, pero la operación total tomaría más tiempo.
Me gustaría que el script se integre en JMP y lo convierta en un complemento para que otros usuarios puedan simplemente instalarlo y reutilizarlo. Si sigo el camino VB6, prefiero hacerlo completamente en VB6, en lugar de generar un script JSL usando VB6 y luego ejecutarlo. Gracias por dar un enfoque diferente. Agradezco cada comentario.:)
Re: ¿Cómo evito que la UI parezca que cuelga mientras hago mucho tiempo para la operación de bucle?¡Parece que esperar es lo que necesito!
Voy a echar un vistazo a @David La siguiente sugerencia.
¡Gracias!Re: ¿Cómo evito que la UI parezca que cuelga mientras hago mucho tiempo para la operación de bucle?o modificar código como Barra de progreso para satisfacer sus necesidades @David_Burnham ¡La clase de estado también se ve bien!