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
  • Operaciones de bloqueo o no bloqueo
  • Tiempo de ejecución de Procedure
  • Process por llamar al timer
  • Process por llamar al timer
  • Cronómetro y ventanas hermanas
  • Timer y Thread
  • Temporizador y servicio Windows
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 Temporizador 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 Temporizador final.
Consejo: En la mayoría de los casos, utilice TimerSys.
Ejemplo
// Procedure used to display the time in EDT_TIME1 on a regular basis
PROCEDURE Display_Time()
EDT_Time1 = TimeSys()
 
// Process performed when opening the window or the page
// Display_Time will be automatically called every second
IF Timer("Display_Time", 100, 1) = 0 THEN
Error("Unable to create the timer")
END
Sintaxis

Iniciar un Procedure periódicamente Ocultar los detalles

<Result> = Timer(<Procedure name> , <Period>)
<Result>: Integer
  • Número del timer abierto (<Número> si se especificó este parámetro),
  • 0 si no se abrió la timer.
<Procedure name>: Character string
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 ou Duration
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 (por ejemplo, "1s" o "10cs").
Observaciones
Windows

Diferencias entre las funciones Timer y TimerSys

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

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.
Windows

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.
Windows

Process por llamar al timer

  • Código del proyecto:
    • Si la función Temporizador se llama en un código del proyecto, el timer se asocia al proyecto. El timer es interrumpido por Temporizador final y cuando la ejecución de la aplicación termina. El Procedure llamado por el timer debe ser:
      • un Procedure global al proyecto:
        Timer("<global procedure>", 1000)
        No se puede pasar ningún parámetro al llamado Procedure (usar variables globales).
      • un método estático de una clase:
        Timer("<class>::<static method>", 1000)
    • Si la función Temporizador 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 Temporizador 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 Temporizador final y al cerrar la ventana. El Procedure llamado por el timer debe ser:
    • una Procedure local de la ventana:
      Timer("<local procedure>", 1000)
      No se puede pasar ningún parámetro al llamado Procedure (usar variables globales).
    • un Procedure global al proyecto:
      Timer("<global procedure>", 1000)
      No se puede pasar ningún parámetro al llamado Procedure (usar variables globales).
    • un método estático de una clase:
      Timer("<class>::<static method>", 1000)
  • Código de un método estático de una clase:
    Si se llama a la función Temporizador en un método estático de una clase, el timer se asocia a la clase. El timer es interrumpido por Temporizador final 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:
      Timer("::<static method>", 1000)
    • un método estático de otra clase:
      Timer("<class>::<static method>", 1000)
    • un Procedure global al proyecto:
      Timer("<global procedure>", 1000)
  • Código de un método de objeto:
    Si se llama a la función Temporizador en el método de un objeto, el timer se asocia al objeto. El timer es interrumpido por Temporizador final o cuando se libera el objeto. El Procedure llamado por el timer debe ser:
    • un método no estático del objeto:
      Timer("<:method>", 1000)
    • un método estático de la clase de objeto:
      Timer("::<static method>", 1000)
    • un método estático de otra clase:
      Timer("<class>::<method>", 1000)
    • un Procedure global al proyecto:
      Timer("<global procedure>", 1000)
WEBDEV - Código NavegadorAjax

Process por llamar al timer

Si se llama a la función Temporizador en el código de una página, de uno de los controles de la página o de un procedimiento navegador local a la página, el timer se asocia a la página. El timer es interrumpido por:
  • Temporizador final,
  • la validación de la página,
  • la sustitución de la página por otra página en el navegador.
El Procedure llamado por el temporizador debe ser un navegador Procedure local a la página: Timer("<procedimiento local>", 1000)
Windows

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 Temporizador sin especificar el número del timer. Por lo tanto, se asignará automáticamente un número de timer a cada ventana.
Windows

Timer y Thread

Un Procedure iniciado por Temporizador 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.
Windows

Temporizador y servicio Windows

Para utilizar la función Temporizador 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).
Componente: wd290vm.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Exemlo de Timer
https://youtu.be/36yxeAZtZlE

http://windevdesenvolvimento.blogspot.com.br/2018/05/dicas-1758-publica-windev-novidade23-9.html

https://groups.google.com/d/forum/amarildowindev

// EXEMPLO

TIMER(MOSTRAR_HORA,5S)

// PROCEDURE

PROCEDORE MOSTRAR_HORA

STC_hora=TimeSys()


De matos
29 05 2018

Última modificación: 27/05/2022

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