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 / Editores / Editor de código
  • Presentación
  • ¿Cómo proceder?
  • Automatización de un procedimiento
  • Caso de temporizador/Procedimientos programados
  • Caja de rosca
  • Caja de rosca principal
  • Observaciones
  • Icono de los procedimientos automáticos
  • Resumen tabla
  • "Al final del evento que contiene la llamada"
  • Detener un procedimiento automático
  • Procedimiento con inicio automático de roscas
  • Programación Orientada a Objetos (POO)
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
Presentación
La programación de temporizadores, subprocesos y procedimientos retardados es ahora gestionada automáticamente por el entorno.
Ya no es necesario programar los procesos y sincronizarlos a través del código de WLanguage, todo lo que tiene que hacer es configurar las opciones del procedimiento automatizado.
No más TimerSys, Timer, ThreadExecute, ... Estas funciones siguen estando disponibles para la compatibilidad con versiones anteriores.
Algunos ejemplos de procesos que se pueden definir sin una sola línea de código:
  • ejecutar un procedimiento cada 10 segundos (marque una casilla de correo electrónico, compruebe la presencia de un archivo en la red, ....)
  • lo mismo, pero comenzando 5 minutos después de que se ejecuta el programa.
  • ejecutar el procedimiento en una tarea en segundo plano (en un hilo), sin esperar a su valor de retorno.
¿Cómo proceder?

Automatización de un procedimiento

Automatizar un procedimiento:
  1. Mostrar el código del procedimiento.
  2. Abre la ventana de descripción de las automatizaciones del procedimiento:
    • Haga clic en ícono en la barra de procedimiento.
    • Seleccione "Configurar los procesos automatizados del procedimiento" de el menú contextual de procedimiento (panel "Explorador del proyecto").
    • Seleccione "Propiedades" de el menú contextual de procedimiento en el panel "Código".
  3. En la ventana que aparece, seleccione el tipo de automatización:

Caso de temporizador/Procedimientos programados

Las opciones son las siguientes:
  • Número de veces: El procedimiento de
    Número de veces
    T puede ser ejecutado:
    • en cuanto: el procedimiento se detendrá automáticamente después de su ejecución.
    • en varias ocasiones: el procedimiento se ejecutará varias veces en un fila. En este caso, se pueden espaciar las ejecuciones de procedimiento. Se implementará automáticamente un temporizador.
  • El espacio entre las llamadas: Para una ejecución múltiple o infinita, esta opción permite definir el retraso entre 2 ejecuciones.
    • un número infinito de veces: el procedimiento se ejecutará un número interminable de veces. En este caso, se pueden espaciar las ejecuciones de procedimiento. Se implementará automáticamente un temporizador.
  • Puede configurar las llamadas de procedimiento subsiguientes:
    • Ignore el temporizador y ejecute el procedimiento inmediatamente:
      En este caso, sólo un temporizador está funcionando. Cualquier otra llamada ejecuta inmediatamente el procedimiento.
      Ejemplo: actualización automática cada minuto, se ejecuta inmediatamente si se presiona F5.
    • Disparar un nuevo temporizador:
      En este caso, varios temporizadores funcionan simultáneamente.
      Ejemplo: trigger un sondeo sobre los elementos pasados como parámetros.
    • Reiniciar el temporizador existente:
      El temporizador actual se detiene y luego se reinicia, el retraso antes de la siguiente ejecución se pone a cero..
      Ejemplo: trigger una operación cuando el usuario deja de escribir en el teclado.
  • Cuando:
    Cuando
    El procedimiento se puede llevar a cabo:
    • de inmediato: el procedimiento se ejecuta tan pronto como se llama en el código.
    • con un arranque automático: el procedimiento se ejecuta automáticamente después del código de inicialización (de ventana, página o proyecto).
    • más tarde: el procedimiento se ejecuta después del período especificado.
      Si la ejecución se retrasa, este intervalo de tiempo puede mantenerse (o no) para las futuras llamadas a este procedimiento.
    • al final del proceso que contiene la llamada: el procedimiento se ejecuta cuando finaliza el proceso que contiene la llamada al procedimiento.
    • al final del evento que contiene la llamada: el procedimiento se ejecuta cuando finaliza el proceso que contiene la llamada al procedimiento. Para más detalles, ver "Al final del evento que contiene la llamada".

Caja de rosca

Esta opción se utiliza para especificar si el procedimiento debe ejecutarse en una tarea en segundo plano (en un hilo)..
Las opciones son las siguientes:
  • Número de veces:
    Número de veces
    El procedimiento puede:
    • estar en funcionamiento en cuanto: el procedimiento se detendrá automáticamente después de su ejecución.
    • estar en funcionamiento en varias ocasiones: el procedimiento se ejecutará varias veces en un fila. En este caso, se pueden espaciar las ejecuciones de procedimiento. Se implementará automáticamente un temporizador.
    • estar en funcionamiento un sinfín de veces: el procedimiento se ejecutará un número interminable de veces. En este caso, se pueden espaciar las ejecuciones de procedimiento. Se implementará automáticamente un temporizador.
    • usar HFSQL o no: Esta opción se utiliza para especificar si el hilo debe acceder a los archivos de datos HFSQL.
      Son posibles dos tipos de accesos:
      • Copia completa de context: Copia utilizada del contexto de conexiones, posiciones, consultas, ....
      • Copia ligera del contexto: Se utiliza para copiar sólo el contexto de las conexiones.
  • Cuando:
    Cuando
    El procedimiento se puede llevar a cabo:
    • de inmediato: el procedimiento se ejecuta tan pronto como se llama en el código y automáticamente después del código de inicialización (si se ha comprobado "Ejecución automática después del código de inicialización").
    • más tarde: el procedimiento se ejecuta después del período especificado.
      Si la ejecución se retrasa, este intervalo de tiempo puede mantenerse (o no) para las futuras llamadas a este procedimiento.
    • al final del proceso que contiene la llamada: el procedimiento se ejecuta cuando finaliza el proceso que contiene la llamada al procedimiento.
    • al final del evento que contiene la llamada: el procedimiento se ejecuta cuando finaliza el proceso que contiene la llamada al procedimiento. Para más detalles, ver "Al final del evento que contiene la llamada".

Caja de rosca principal

Esta opción le permite llamar a un procedimiento en el hilo principal desde un hilo secundario. Esta opción se utiliza principalmente para acceder a la GUI. Esta opción es equivalente a ExecuteMainThread.
Observaciones

Icono de los procedimientos automáticos

Tan pronto como un procedimiento es automatizado, el icono de icono que se encuentra a la derecha en la barra de procedimientos se convierte en ícono
El icono que se encuentra a la izquierda en la barra de procedimientos indica el tipo de automatización del procedimiento:
  • proceso repetido: Icono de procedimiento repetido
  • procedimiento diferido: Icono de procedimiento retrasado
  • procedimiento repetido con rosca: Procedimiento repetido con el icono de hilo
  • procedimiento ejecutado en una rosca: Procedimiento Ejecutar en un icono de hilo
  • procedimiento repetido con temporizador: Procedimiento repetido con el icono del temporizador
  • procedimiento repetido retardado en una rosca: Procedimiento repetido retardado en un icono de hilo

Resumen tabla

A continuación, tabla presenta los diferentes casos de ejecución de los procedimientos en función de las opciones automatizadas seleccionadas:
Las siguientes llamadas sin mantener el intervalo de tiempo o el tiempo muertoLas siguientes llamadas mientras se mantiene el intervalo de tiempo o el tiempo muerto
Procedimiento retardado (verificado"Retrasado")1ª llamada manualTiempo de espera y luego ejecutar el procedimiento...Tiempo de espera y luego ejecutar el procedimiento...
Próximas convocatoriasEjecute el procedimientoTiempo de espera y luego ejecutar el procedimiento...
Procedimiento retrasado, repetido con tiempo de espera (marcado como "retrasado", "infinito" y "espaciar las llamadas")1ª llamada manualTiempo muerto -> Procedimiento -> Tiempo muerto -> Procedimiento ...Tiempo muerto -> Procedimiento -> Tiempo muerto -> Procedimiento ...
Próximas convocatoriasEjecute el procedimiento (una sola vez)Tiempo muerto -> Procedimiento -> Tiempo muerto -> Procedimiento ...
Procedimiento retardado, ejecución automática ("Retraso" y"Ejecución automática...." comprobado)1ª llamada automáticaTiempo de espera y luego ejecutar el procedimiento...Tiempo de espera y luego ejecutar el procedimiento...
Próximas convocatoriasEjecute el procedimientoTiempo de espera y luego ejecutar el procedimiento...
Procedimiento retrasado, ejecutado automáticamente, repetido con tiempo de espera ("Retrasado", "Infinito", "Espaciar las llamadas" y "Ejecución automática..." comprobado)1ª llamada automáticaTiempo muerto -> Procedimiento -> Tiempo muerto -> Procedimiento ...Tiempo muerto -> Procedimiento -> Tiempo muerto -> Procedimiento ...
Próximas convocatoriasEjecute el procedimiento (una sola vez)Tiempo muerto -> Procedimiento -> Tiempo muerto -> Procedimiento ...

"Al final del evento que contiene la llamada"

Los procedimientos con la opción "Al final del evento que contiene la llamada" marcada, y llamada desde un procedimiento de devolución de llamada (procedimiento utilizado por fListFile, Evento, ...) se ejecutan al final de cada llamada a la devolución de llamada.
Ejemplo:
// -----------------
// standard case
// -----------------
Click of button
// beginning of button click code
Proc1
// beginning of Procedure1 code
Proc2
// beginning of Procedure2 code

Call to EndEvent procedure
// end of Proc2 code
// end of Proc1 code
// end of button click code
Execution of EndEvent procedure
// -------------------
// callback case
// -------------------
Click of button
Proc1
Proc2
use of fListFile
Callback1 procedure
// beginning of code of Callback1 Procedure
CallbackProc2
// beginning of code of Callback2 Procedure
Call to ProcEndEvent
// end of ProcedureCallback2 code
// end of ProcedureCallback1 code
Execution of ProcEndEvent
ProcedureCallback1
// beginning of ProcedureCallback1 code
ProcedureCallback2
// beginning of ProcedureCallback2 code
Call to ProcEndEvent
// end of ProcedureCallback2 code
// end of ProcedureCallback1 code
Execution of ProcEndEvent

Detener un procedimiento automático

Para detener un procedimiento automático, simplemente use EndAutomatedProcedure.

Procedimiento con inicio automático de roscas

Recordatorio: En WLanguage, por defecto, cada procedimiento crea una sección crítica automática. Por lo tanto, dos hilos no pueden ejecutar el mismo procedimiento al mismo tiempo.
Si un procedimiento que desencadena automáticamente un hilo se llama dos veces:
  • en modo por defecto: se ejecuta el primer procedimiento y el segundo espera a que el primero se detenga antes de ejecutarse.
  • en el modo threadCriticalSection (definido por ThreadMode), los dos hilos se activan al mismo tiempo.

Programación Orientada a Objetos (POO)

Cuando la automatización de un procedimiento se define en un método de clase para una ejecución sin fin por temporizador, se puede hacer una sola llamada para todas las instancias:
  • si la automatización del método está configurada con "Perform the call only". : sólo una de las instancias de clase realizará la llamada al método a través del temporizador.
  • si la automatización del método está configurada con "Start an additional timer" (Iniciar un temporizador adicional) : todas las instancias de clase realizarán la llamada al método para la instancia actual.
Si la automatización está configurada para una ejecución sin fin en un hilo, todas las instancias de clase realizarán una llamada al método para la instancia actual.
Versión mínima requerida
  • Versión 10
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