![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
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.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
|||
|
|||
Gracias, no encontre diferencia
Hola probe lo que me dijistes y no encontre diferencia.
Muchas gracias; |
#4
|
||||
|
||||
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
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 |
#6
|
||||
|
||||
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
![]() |
|
|
![]() |
|