AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de Windows / Funciones de eventos de Windows
  • Diferencias entre las funciones Timer y TimerSys
  • Process por llamar al timer
  • Operaciones de bloqueo o no bloqueo
  • Tiempo de ejecución de Procedure
  • Cronómetro y ventanas hermanas
  • Timer y Thread
  • Temporizador y servicio Windows
  • Temporizador e interacciones con el usuario: pergaminos, gestos, ....
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Periódica y automáticamente llama a un WLanguage Procedure. En un procedimiento, la función TimerSys permite identificar el temporizador que inició el procedimiento.
La secuencia de llamadas periódicas a un Procedure se llama timer. Esta llamada periódica será detenida por EndTimerSys.
WINDEVWINDEV Mobile Se pueden utilizar procedimientos automáticos en lugar de la función TimerSys. Vea el procedimientos automáticos para más detalles.
Ejemplo
// Procedure used to display the time in EDT_Time1 on a regular basis
PROCEDURE Display_Time()
EDT_Time1 = TimeSys()
 
// Process when opening the window
// Display_Time will be called every second
IF TimerSys("Display_Time", 100, 1) = 0 THEN
Error("Unable to create the timer")
END
Sintaxis

Iniciar un Procedure periódicamente Ocultar los detalles

<Result> = TimerSys(<WLanguage procedure> , <Period> [, <Number>])
<Result>: Integer
  • Número del timer abierto (<Número> si se especificó este parámetro),
  • 0 si no se abrió la timer.
<WLanguage procedure>: Procedure name
Nombre de WLanguage Procedure que se iniciará periódicamente.
Observación: Si este parámetro corresponde al nombre de un Procedure interno, el nombre de Procedure interno no debe estar entre comillas.
<Period>: Integer
Tiempo (en centésimas de segundo) entre dos llamadas al Procedure por Time r. La precisión del período depende del estado del sistema pendiente.
Este parámetro puede corresponder a:
  • un entero que corresponde al número de centésimas de segundo,
  • una variable de tipo Duration,
  • la indicación directa de la duración (1 s o 10 ms, por ejemplo).
<Number>: Optional integer
Número impuesto a la timer. Si se especifica este parámetro, el número de timer será el número seleccionado. Si este número corresponde a un timer existente, será detenido y reemplazado por el nuevo timer.

Averiguar el número de timer Ocultar los detalles

<Result> = TimerSys()
<Result>: Integer
Número del temporizador que llamó al actual Procedure.
Observaciones

Diferencias entre las funciones Timer y TimerSys

  • Timer le permite usar un timer administrado por WINDEV o WINDEV Mobile. En este caso, la frecuencia de la llamada se calcula a partir del momento en que se realizó la llamada a la timer.
  • La función TimerSys permite utilizar un temporizador gestionado por el sistema. En este caso, la frecuencia de la llamada se calcula a partir del final de la ejecución de Procedure.
Tip: En la mayoría de los casos, utilice TimerSys.
De hecho, la función Timer consume más recursos que la función TimerSys y solo funciona cuando se muestran ventanas de WINDEV/WINDEV Mobile (el temporizador se detiene si se muestra un cuadro de mensajes).

Process por llamar al timer

  • Código del proyecto:
    • Si la función TimerSys se llama en un código del proyecto, el timer se asocia al proyecto. El timer es interrumpido por EndTimerSys y cuando la ejecución de la aplicación termina. El Procedure llamado por el timer debe ser:
      • un Procedure global al proyecto:
        TimerSys("<global procedure>", 1000)
      • un método estático de una clase:
        TimerSys("<class>::<static method>", 1000)
    • Si la función TimerSys se utiliza en el proceso de apertura del proyecto y no hay ninguna ventana abierta, el timer será válido para todo el proyecto. Se encuentra en estado pendiente y se activará automáticamente en cuanto se abra una ventana o durante las llamadas a Multitask..
  • Código de una ventana, control o Procedure local:
    Si se llama a la función TimerSys en el código de una ventana, de uno de los controles de la ventana o de un procedimiento local a la ventana, el timer se asocia a la ventana. El timer es interrumpido por EndTimerSys y al cerrar la ventana. El Procedure llamado por el timer debe ser:
    • una Procedure local de la ventana:
      TimerSys("<local procedure>", 1000)
    • un Procedure global al proyecto:
      TimerSys("<global procedure>", 1000)
    • un método estático de una clase:
      TimerSys("<class>::<static method>", 1000)
  • Código de un método estático de una clase:
    Si se llama a la función TimerSys en un método estático de una clase, el timer se asocia a la clase. El timer es interrumpido por EndTimerSys y cuando la ejecución de la aplicación termina. El Procedure llamado por el timer debe ser:
    • un método estático de la clase:
      TimerSys ("::<static method>", 1000)
    • un método estático de otra clase:
      TimerSys("<class>::<static method>", 1000)
    • un Procedure global al proyecto:
      TimerSys("<global procedure>", 1000)
  • Código de un método de objeto:
    Si se llama a la función TimerSys en el método de un objeto, el timer se asocia al objeto. La timer es interrumpida por EndTimerSys, al liberar el objeto y al cerrar la ventana. El Procedure llamado por el timer debe ser:
    • un método no estático del objeto:
      TimerSys(":<method>", 1000)
    • un método estático de la clase de objeto:
      TimerSys ("::<static method>", 1000)
    • un método estático de otra clase:
      TimerSys("<class>::<method>", 1000)
    • un Procedure global al proyecto:
      TimerSys("<global procedure>", 1000)

Operaciones de bloqueo o no bloqueo

  • Un temporizador no se bloquea cuando se abren los menús, cuando se abre una ventana, cuando se abren las ventanas associated con Advertencia, Confirme, Error, Info, OKCancel y YesNo.
  • Una timer se cierra cuando las ventanas se mueven o cambian de tamaño.

Tiempo de ejecución de Procedure

Si el tiempo usado para Process el Procedure llamado por el timer es mayor que el tiempo solicitado entre cada llamada al Procedure, las llamadas al timer no se acumulan: habrá una sola llamada pendiente.
WINDEVReportes y ConsultasJavaCódigo de Usuario (UMC)

Cronómetro y ventanas hermanas

Cuando se abre varias veces la misma ventana que gestiona un timer (ventanas hermanas en modo MDI), debe utilizarse la función TimerSys sin especificar el número del timer. Por lo tanto, se asignará automáticamente un número de timer a cada ventana.
WINDEVReportes y ConsultasCódigo de Usuario (UMC)

Timer y Thread

Un Procedure iniciado por Timer o TimerSys de un Thread secundario (ThreadExecute) no será llamado. De hecho, un Thread secundario no tiene ninguna interfaz (lo que significa que no hay ninguna ventana abierta): este thread secundario no recibe los mensajes del sistema (el "bucle de mensajes") como la aplicación principal thread.
WINDEV

Temporizador y servicio Windows

Para utilizar la función TimerSys desde un Servicio Windows, debe llamarse a esta función desde una ventana abierta por el código del servicio.

Atención: Esta solución no es recomendable. Para repetir un Process de un servicio, le aconsejamos que llame a este Process desde el código del servicio (el código del servicio que se está ejecutando en bucle).
iPhone/iPad

Temporizador e interacciones con el usuario: pergaminos, gestos, ....

Las interacciones del usuario (desplazamientos, gestos) tienen prioridad sobre los temporizadores..
Por ejemplo, deslizar un control Looper será una operación de bloqueo para la ejecución de un procedimiento llamado por TimerSys.
Si se debe ejecutar un Procedure durante las interacciones con el usuario, este Procedure debe ser iniciado por ThreadExecute.
Componente: wd290vm.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local