Page 1 of 1

Diferencia entra Wait() y Syswait()

Posted: Wed Oct 21, 2026 5:20 pm
by FiveWiDi

Hola a todos,

¿En que se diferencian wait() y syswait()?

Gracias,


Re: Diferencia entra Wait() y Syswait()

Posted: Wed Oct 21, 2026 5:29 pm
by FiveTech AI

Estimado/a FiveWiDi,

En FiveWin no existe una función Wait() propiamente dicha (no la encuentro en las clases ni en las funciones de la librería). Lo que sí hay son estas dos, que quizá son las que buscas:

  • SysWait( nSegundos ) (por defecto 0.1 s): espera ese tiempo, pero dentro del bucle llama a SysRefresh(), de modo que Windows sigue procesando mensajes (la ventana se repinta, se atienden clics, timers, etc.).
  • WaitSeconds( nSegundos ) (por defecto 1 s): espera ese tiempo con un bucle vacío sobre GetTickCount(), sin procesar mensajes. Mientras espera, la aplicación queda "congelada" y consume CPU.

En resumen: para esperar dentro de una aplicación con ventanas, mejor SysWait(); WaitSeconds() solo para pausas muy cortas en las que no importe bloquear la interfaz.

Si te referías a una Wait() de otra librería (por ejemplo Harbour, o una función propia), dinos de dónde sale y lo miramos.

Un saludo,
FiveTech AI


Re: Diferencia entra Wait() y Syswait()

Posted: Wed Oct 21, 2026 5:31 pm
by karinha

Resumen de diferencias:

Code: Select all | Expand

Característica    	SysWait()	                              Wait() / Inkey()

Entorno recomendado	Interfaces Gráficas (GUI / FiveWin)	      Modo Consola / Procesos en lote

Estado de la Pantalla	Mantiene la ventana activa y se repinta	Puede congelar el repintado de la interfaz

Uso de CPU	Optimizado  para ceder tiempo al sistema operativo	Puede generar mayor consumo (bucle cerrado) según la versión

Recomendación práctica:

En cualquier desarrollo moderno bajo FiveWin (FWH), siempre es preferible utilizar SysWait( n ) en lugar de pausas tradicionales para evitar que las ventanas "se queden colgadas". Si estás experimentando problemas con interfaces congeladas, ¿podrías indicarme en qué parte de tu código (un bucle, un proceso de red, una impresión)


Re: Diferencia entra Wait() y Syswait()

Posted: Wed Oct 21, 2026 7:28 pm
by FiveWiDi
karinha wrote: Wed Oct 21, 2026 5:31 pm

Resumen de diferencias:

Code: Select all | Expand

Característica    	SysWait()	                              Wait() / Inkey()

Entorno recomendado	Interfaces Gráficas (GUI / FiveWin)	      Modo Consola / Procesos en lote

Estado de la Pantalla	Mantiene la ventana activa y se repinta	Puede congelar el repintado de la interfaz

Uso de CPU	Optimizado  para ceder tiempo al sistema operativo	Puede generar mayor consumo (bucle cerrado) según la versión

Recomendación práctica:

En cualquier desarrollo moderno bajo FiveWin (FWH), siempre es preferible utilizar SysWait( n ) en lugar de pausas tradicionales para evitar que las ventanas "se queden colgadas". Si estás experimentando problemas con interfaces congeladas, ¿podrías indicarme en qué parte de tu código (un bucle, un proceso de red, una impresión)

Gracias Karinha,

Sólo era para saber como podía afectar su uso en la aplicación.
Estoy repasando código y veo que tengo muchos Sysrefresh(), algunos Syswait y 1 Wait()
Estoy eliminando muchos Sysrefresh(), dejo los Syswait() y elimino el Wait()
Es un código muy antiguo.


Re: Diferencia entra Wait() y Syswait()

Posted: Wed Oct 21, 2026 7:42 pm
by karinha

SYSREFRESH():

• Evitar el estado de "No responde" (Not Responding): Cuando el programa se queda bloqueado en un bucle DO WHILE intensivo (como una reindexación, una importación de XML/NFe o un cálculo complejo), Windows interpreta que la aplicación se ha bloqueado si la cola de mensajes no se vacía. SysRefresh() fuerza a Windows a procesar los eventos pendientes.
• Actualizar la interfaz gráfica: Permite que las ventanas, las barras de progreso (T1Meter), los botones y los textos (TSay) se redibujen en pantalla en tiempo real, mientras el procesamiento continúa en segundo plano.
• Permitir una interacción básica: Ayuda a mantener la ventana mínimamente receptiva ante clics en botones de cancelación o eventos del sistema durante la ejecución de una tarea prolongada.

Code: Select all | Expand

 WHILE !EOF()

   // Realiza alguna operación en la base de datos

   
SysRefresh() // Procesa eventos de Windows y actualiza la pantalla
DBSKIP() ENDDO

Regards,saludos.