Recomendación con timer

Más que pregunta es ver que recomendáis para usar los timers

Tengo que hacer un timer en el formulario del TPV para imprimir los pedidos pendientes en la impresora de cocina.

En la configuración de la aplicación, he puesto un check de activar timer y número de repeticiones para que se ejecute (será el timer maximo en el formulario).

Al abrir el formulario, doy valor a la activación del timer y al timer máximo.

En el formulario he activado el timer cada 1000 mili segundos, es decir, cada segundos. Y he puesto 2 variables timer máximo y timer actual. Una conexión de evento timer que ejecuta un manejador.

El manejador, si tiene activado el timer, suma 1 al timer actual hasta que sea mayor que el timer máximo y entonces imprimo y reseteo el timer actual

Todo funciona bien.

Mi pregunta (y creo que ya lo he hablado alguna vez en algún sitio, pero ya no recuerdo la conclusión) es si esto podría afectar al rendimiento mucho.

Por ejemplo, el terminal que no tenga el timer activado, se verá afectado que cada segundo ejecute un manejador, que compruebe la activación o no y no haga nada.

O que es mejor, un timer cada seg que se haga el proceso completo cada x ciclos (siendo x por ejemplo 30) o poner el timer cada 10 seg y que se haga el proceso cada x (siendo x=3)

Hola SyP.

En ejecución, cada vez que se ejecuta un Manejador se refresca el formulario completo, revisando las fórmulas y actualizando los controles. Esto puede tener un coste no deseado que ralentiza el Interface de usuario y ser muy molesto.

El evento Timer ejecuta un Manejador y como tal tiene el mismo efecto de refresco que cualquier otro manejador del formulario.

Por lo tanto, siempre será más adecuado usar el Timer de 10 seg. que el de 1seg.

Saludos
Paco Satué

OK Gracias.

Lo pondré a 10 seg y que trabajen con multiplos de 10

Si el tema de las licencias no es un problema, sería recomendable una licencia con el TPV normal y otra licencia con un interface que solo imprima. Afectaría al rendimiento del TPV que en el equipo haya dos vclients corriendo, uno para uso normal y el otro solo para el timer?

Hola SyP.

No creo que sea necesario usar 2 vClients.

Si el tema es lanzar un proceso de forma desatendida cada X segundos, puedes añadir el formulario con el Timer a un Dock del Autoexec. Este Timer ya no interfiere en el refresco del formulario que tenga el foco en ese momento.

El formulario del Dock puede estar oculto y se ejecutará el manejador cada vez que se dispare el Timer.

Pruébalo de esta manera y comentas.
Saludos
Paco Satué

1 me gusta

OK Muchas gracias. Voy a montarlo así. Ni se me había pasado por la cabeza usar el dock, que es mejor que el formulario que yo quería. Voy a ver