Tutorial: Como acelerar el Timer en Windows hasta 1ms

  1. 7 months ago

    Javier M

    26 Feb 2019 Pre-Release Testers, Xojo Pro, Third Party Store AprendeXojo - Europe, Spain

    Hola,

    He publicado un nuevo tutorial explicando una técnica mediante la cual podemos utilizar Timers (ejecutar código a intervalos regulares) bajo Windows con una resolución máxima de hasta 1ms. Como de costumbre, espero que lo encuentres de interés.

    Acelerar Timers en Windows

    Javier

  2. Hola Javier,

    Muchas gracias, muy interesante.

    Me ha sorprendido encontrar un DoEvents en el código. Entiendo su necesidad, pero como he leído varias que es problemático fuera de las aplicaciones de consola, me ha parecido curioso.

    ¿Puede dar problemas? ¿Por qué no, en caso de que no los dé?

    Creo que este tema (tanto tu tutorial como lo del uso de DoEvents) podría ser suficientemente interesante como para empezar un hilo nuevo en inglés, si no existe ya uno.

    Un saludo,

    Julen

  3. Javier M

    27 Feb 2019 Pre-Release Testers, Xojo Pro, Third Party Store AprendeXojo - Europe, Spain

    Hola Julen,

    La documentación indica claramente que no debe de utilizarse puesto que crea un Main Loop dentro del Main Loop existente… hasta la fecha he tenido que usarlo unas cuantas ocasiones en proyectos Linux y Windows y, por el momento, sin problema.

    Es el único modo que tenemos aquí de mantener la UI reactiva… no hay más gaitas. Si tiramos de hilos, perdemos contacto con la capacidad de operar sobre elementos de UI, y estaríamos reduciendo los tiempos a los establecidos por cada Loop de Eventos (el tiempo invertido en cada iteración del Thread)

    Realmente me he devanado los sesos buscando alguna otra alternativa. La mejor habría sido el uso de los MultimediaTimer (óptima), pero… ya sabes.

    El único modo "casi" perfecto es el proporcionado por el plug-in TimerMBS de @ChristianSchmitz , dado que maneja sus propios hilos pre-emptivos y llamadas reentrantes; aun así, impacta en el refresco realizado por otros temporizadores estándar (por ejemplo). Es el único detalle que le he visto.

    Para una buena cantidad de casos, creo que la solución propuesta en el artículo es buena.

    Javier

or Sign Up to reply!