![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Otra pregunta ya por curiosidad...
¿Qué es lo que ocurriría si se utilizase un número muy elevado de timers? ¿Simplemente la aplicación no podría crearlos o es que los timers puede que no tuviesen precisión? ¿Alguien lo sabe? Gracias!!! |
|
#2
|
||||
|
||||
|
Interesante pregunta.
Además del obvio aumento de consumo de memoria y recursos (80 timers son 80 handles de memoria más), quizás "empezaran" a no ser precisos. Ten en cuenta que la aplicación sólo puede ejecutar una sola cosa al tiempo, si está procesando un evento de timer y llega otro, simplemente se añade a la cola de mensajes de la aplicación, para ir ejecutándolos en el orden de llegada. El último evento que llega, puede demorarse desde que se lanzó hasta que se ejecuta su código del evento OnTimer. Incluso producir efectos indeseados en la interfaz, por ejemplo, al ejecutarse muchos eventos de timers no se repinta la pantalla (recordemos que los eventos de repintados en windows tienen poca prioridad), y se verían textos no actualizados aún cuando en el timer se haya ordenado cambiar un caption de un label... o cosas por el estilo. Por otra parte está la lógica del programa, es mucho más fácil hacer una modificación (o depurar) si todo está centralizado, en lugar de tener 80 timers que administrar. Mentalmente no puedes saber cuando se ejecutarían esos timers, al estar centralizado puedes hacer una resta de fechas o usar SecondsBetween entre un timer y la hora actual para saber "cuanto tiempo le falta a ese timer para que se ejecute su código" Algunas veces es necesario descentralizar para ordenar el código, en este caso, creo que añade ventajas el tenerlo centralizado. Saludos curiosón ![]()
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#3
|
||||
|
||||
|
Saludos.
A mí entender, puedes ejecutar tanto timers como memoria tengas disponible si utilizas el recurso de los Thread (Hilos); lo que sí veo un tanto incomodo es la administración de los mismos al ser un elevado número de procesos.
__________________
Gracias, Rolphy Reyes |
|
#4
|
|||
|
|||
|
Hola a todos de nuevo... Leyendo la respuesta de Rolphy Reyes me asalta la siguiente duda: ¿un timer no es un thread?. Es decir, a mi modo de entender un timer, yo pensaba que no era más que un thread en paralelo que cuando le toca realizar una tarea la realiza sin más. ¿Qué diferencias habría entre tener varios timers en una aplicación y varios hilos con un timer?
Gracias por vuestras respuestas... PD: hay q ver todo lo que estoy aprendiendo !!! (y todo lo que me queda por aprender )Saludos!!! ![]() |
|
#5
|
||||
|
||||
|
La diferencia básica y principal es que cuando ejecutas un Timer desde la aplicación sin Thread (Hilos) se ejecuta en modo Sincrónico y con hilos es Asincrónico.
__________________
Gracias, Rolphy Reyes |
|
#6
|
||||
|
||||
|
No.
Un TTimer de delphi sólamente engloba varias llamadas a la API de windows, (las más relevantes: SetTimer y KillTimer) además de ponerte el componente en la paleta de delphi para más comodidad. Como esas rutinas pertenecen a la API, es difícil saber cómo están implementadas internamente. Hace mucho leí que un ordenador incluía 4 cronómetros hardware y que dichas APIs lo manejaban, (no tengo referencias para corroborar eso). Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#7
|
|||
|
|||
|
Supongamos entonces que quiero implementar un reloj. Lógicamente este deberá cambiar cada segundo. ¿Con qué sería mejor hacer esto con un timer o con un thread? ¿Qué ventajas/inconvenientes podría tener cada uno?
De nuevo mil gracias por vuestras respuestas y vuestra paciencia... ![]() |
|
#8
|
||||
|
||||
|
No te compliques la vida, un timer y marchando.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#9
|
||||
|
||||
|
Cita:
. No intentes contar tu los segundos, por ejemplo incrementando una variable en el evento del timer porque por muy preciso que sea siempre tendras un pequeño error y con el tiempo (despues de un par de horas) "tu reloj" terminara atrasando o adelantando. Lo mejor es que utilices el timer para mostrar el valor de hora del sistema en, por ejemplo, un label.
¿Y si quieres hacer un cronometro? Pues te digo lo mismo Simplemente tienes que guardar el valor inicial. Por ejemplo:
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Duda con un array de Timers | vejerf | OOP | 7 | 15-10-2008 16:02:07 |
| Cantidad de veces que se ejecuta una aplicación | efelix | OOP | 3 | 09-11-2006 17:23:55 |
| Duda sobre instalación de aplicación creada en Delphi | vick | Conexión con bases de datos | 6 | 19-12-2005 16:12:15 |
| Duda en utilizar 2 Timers para comunicacion paralelo | ibstk | Varios | 2 | 05-08-2004 03:59:26 |
| Duda sobre creacion de aplicación | CFPA86 | Varios | 1 | 05-09-2003 20:20:43 |
|