From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



Utilizando QuitUserInterface() y ProcessSystemEvents()



Software Primario: LabWindows/CVI Development Systems
Versión de Software Primario: 5.0
Versión de Software Primario Corregido: N/A
Software Secundario:

Problema: Utilizando QuitUserInterface() y ProcessSystemEvents()

Solución: LabWindows/CVI opera con el principio de ejecución de callbacks. En algunas ocasiones, Usted puede tener una aplicación que tenga un botón de "Iniciar" y un botón de "Terminar" en el panel frontal. Cada uno de esos botones tendrá una función callback asociada para responder a un evento. Consideremos una aplicación que unicamente tiene un botón de "Iniciar" y un botón de "Terminar". El callback para el botón de "Terminar" llama a la función QuitUserInterface().

Si un usuario presiona el botón de "Terminar" mientras la aplicación está en el callback del botón "Iniciar" (o cualquier callback en este caso), el evento no responde hasta que el callback que está corriendo en este momento (Start) se haya completado y el código regrese a la función RunUserInterface(). Sin embargo, existe una manera para responder a eventos desde adentro de una función callback: llamando a la función ProcessSystemEvents(). Si se llama a esta función dentro del callback del botón "Iniciar", CVI revisará si otros eventos han ocurrido. Si el usuario presionó el botón de "Terminar", CVI brincara al callback de "Terminar" y ejecutará la función QuitUserInterface(). Cuando CVI regresa, regresa a la línea de código después de ProcessSystemEvents() en el callback original y continua ejecutando el código.

El concepto importante aquí es que QuitUserInterface() ¡no hace que la aplicación termine! Unicamente deshabilita la función RunUserInterface(). El código regresa al callback del botón "Start" y continua en donde se quedó. El callback de Start tendrá que terminar y regresar antes de que RunUserInterface() termine.

Para darle la vuelta a esto, se podría utilizar una "bandera de parada" en el callback del botón "Terminar". La línea siguiente a ProcessSystemEvents() en el callback del botón "Start" debe ser: "if (bandera de parada) return 1;". Esto hara que la función RunUserInterface() termine. Si RunUserInterface() es la última línea de código en la función main(), la aplicación terminará.


Ligas Relacionadas:

Archivos Adjuntos:





Día del Reporte: 04/11/2000
Última Actualización: 06/18/2001
Identificación del Documento: 1WA96J7T