Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Evitar los timers (https://www.clubdelphi.com/foros/showthread.php?t=22459)

zugazua2001 16-06-2005 06:11:12

Evitar los timers
 
Hola en mi aplicacion presento varias fotos que se van cambiando mediante unos timers.
La aplicacion se me pone muy lenta, esto lo observo cuando abro los menues y me muevo por las distintas opciones.
Queria saber como puedo hacer para evitar que se ponga lenta la aplicacion.
Gracias por todo y saludos.

Lepe 16-06-2005 09:22:58

Si el intervalo del timer es muy pequeño (milisegundos) puede que esté agobiando al resto del programa, en ese caso, en el evento OnTimer, añade un Application.ProcessMessages.

Espero te ayude.

zugazua2001 16-06-2005 19:15:34

Gracias, no encontre diferencia
 
Hola probe lo que me dijistes y no encontre diferencia.
Muchas gracias;

Casimiro Noteví 16-06-2005 20:59:21

Prueba a cambiar los timers, el que trae delphi no es muy efectivo, te aconsejo que pruebes el que trae las RX
Es un timer "multihilo" que no consume recursos apenas y es muchísimo más exacto que el de delphi.

Mick 16-06-2005 23:07:08

Lo mas probable es que el codigo que se ejecuta dentro de esos timers necesita mucha CPU o mucho movimiento de datos/imagenes desde la memoria ram o disco hacia la memoria de la tarjeta grafica.
Como se comenta poniendo el timer en un Thread podria hacer que mejore la respuesta del programa, a costa eso si de que el proceso que muestra las fotos se ralentice ya que el microprocesador es uno solo , y solo puede hacer una cosa a la vez.
Otro problema es que si efectivamente ese proceso lo que hace principalmente es dibujar imagenes en la pantalla, un thread aparte no tendria porque resolver el problema debido a que dentro de una misma aplicacion solo un proceso a la vez (normalmente el principal con el uso de synchronize) puede dibujar en la pantalla, de modo que si el codigo del timer esta dibujando esas imagenes, los menus, butones etc, y otros elementos graficos del programa no pueden refrescarse o redibujarse hasta que el proceso del timer acabe de dibujar.
En definitiva yo haria las dos siguiente cosas:
-Comprobar la velocidad del timer , puede estar demasiado rapido.
-Comprobar el consumo de cpu del proceso de dibujado, que es donde seguramente estara el problema, en este caso solo se pueden hacer dos cosas, o poner una cpu mas rapida u optimizar ese codigo para que haga el mismo trabajo en menos tiempo (usando menos cpu).

Saludos

Lepe 17-06-2005 11:11:55

Acabo de recordar un detalle, creo que importante, Un menú tapará la imagen de fondo cuando lo despliegas y al moverte por los menus, hace que se redibuje la imagen de fondo con lo cual, el timer y el propio menú está duplicando las veces que se redibuje la imagen de fondo.

En este contexto, quitaría la imagen de fondo :(

Un saludo


La franja horaria es GMT +2. Ahora son las 19:24:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi