FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Hola mamcx,
Entiendo el concepto del bucle de los eventos. Aún así, muchas gracias por la explicación. Intentaré resumir las dudas con las siguientes preguntar: - Quien genera y encola los eventos del timer? Qué thread? El thread principal u otro thread? Yo apuesto por el thread principal. - Cuando genera y encola el evento del timer? Yo supongo que cuando está libre y se percata de que ya ha pasado el tiempo establecido. - Cuántos eventos genera y encola cuando se da cuenta de que ha llegado la hora? 1? O tantos como hibiesen sido generados si no hubiese estado ocupado? Yo creo que debería generar sólo uno. - Una vez generado y encolado un evento, cuanto tarda en generar y encolar un nuevo evento? Yo creo que, desde que generó el ultimo evento, debería esperar el tiempo establecido en el timer, por lo menos. Compila y ejecuta la aplicación. Veras los comportamientos q describo en mi mensaje inicial. Saludos y gracias. |
#2
|
||||
|
||||
Mucha de la respuesta esta en:
http://stackoverflow.com/questions/1...-threading-app Basicamente: El API de windows es quien controla todo. TTimer es solo un wraper. Este es creado en el thread ppal. Los links que te pase responden el resto.
__________________
El malabarista. |
#3
|
||||
|
||||
Recordando un tema similar, busqué "TTimer+funcionamiento site:www.clubdelphi.com" en Google, lo cual me llevó a este hilo de los foros:
http://www.clubdelphi.com/foros/showthread.php?t=73908 No se trata de ninguna explicación magistral, pero de algo puede servir. Aplica de igual forma a Delphi y a C++Builder. |
#4
|
|||
|
|||
Buenos días Al González,
Tras leer tus indicaciones, tengo claro que el sistema operativo es quien genera los eventos del timer. Algo que no sabía. Pero sigo sin tener claro cuándo los genera, porque, según lo que veo en mi aplicación, mientras el proceso está dormido mediante un sleep, el sistema operativo sólo genera un evento, cuando le hubiese dado tiempo a generar 5!! Si los eventos los ha de generar el sistema operativo cada segundo, y nuestro programa ha pasado 5 segundos dormidos, es lógico que durante esos 5 segundos no haya tratado ningún evento, pero no es lógico que el sistema operativo, que no ha estado durmiendo, no haya generado 5 eventos... Bien, seguiremos investigando. Gracias por tu ayuda. |
#5
|
||||
|
||||
Si has leido los links que te pase? Porque todas las preguntas ya estan respondidas a este punto.
No sabes ingles?
__________________
El malabarista. |
#6
|
||||
|
||||
Cita:
Saludos. |
#7
|
||||
|
||||
Que es exactamente lo que pasa, recuerda, es un INTERRUP y eso aplica a todo el thread. Por eso, el OS no puede enviar nada al thread, esta pausado! asi que mientras esta pausado, este "ignora" al thread.
Lo cual esta explicado en los links, por ejemplo: Cita:
__________________
El malabarista. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
como guardar en postgresql (como trabaja el datamodule) | mematanlimon | Lazarus, FreePascal, Kylix, etc. | 0 | 15-02-2010 19:06:12 |
Como se trabaja con ejecutables? | alloger | C++ Builder | 2 | 13-10-2006 12:42:54 |
Como se trabaja la Clausula Like en delphi | Shidalis | OOP | 4 | 26-08-2005 16:18:51 |
Codigo de la tecla F3 Como cuando se trabaja un enter en vez de un TAB | jmedina | Varios | 4 | 08-07-2004 16:05:21 |
Como trabaja RecordCount de las Tablas Paradox??? | JamesBond_Mx | Conexión con bases de datos | 12 | 06-04-2004 16:42:48 |
|