| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Mar 31 Oct, 2017 7:43 pm Asunto: Timer dentro de un Thread |
|
|
Hola a todos,
Alguien ha metido alguna vez un Timer dentro de un Thread?
Hago lo siguiente:
Primero en el .h del hilo defino el Timer y el evento:
TTimer *Timer1;
void __fastcall EjecutaTimer(TObject *sender);
En el "Execute" del hilo pongo:
Timer1=new TTimer(Application);
Timer1->OnTimer=EjecutaTimer;
Timer1->Interval=1000;
Timer1->Enabled=true;
Y creo el evento:
void __fastcall TTablaThread::EjecutaTimer(TObject *sender)
{
Synchronize(&UpdateCaption);
}
La historia es que no da error, compila perfectamente pero no ejecuta el Timer, es como si no estuviera activo.
Sabéis por que puede ser?
Un saludo
Carlos _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Sab 04 Nov, 2017 4:18 pm Asunto: |
|
|
Hola Carlos,
No creo que sea muy recomendable usar un Timer dentro de un Thread, pero haz una prueba:
Crea e inicializa el Timer dentro del Constructor del Thread:
| Código: | Timer1 = new TTimer(Application);
Timer1->Enabled = false;
Timer1->OnTimer = EjecutaTimer;
Timer1->Interval = 1000; |
Y actívalo en el Execute:
| Código: | Timer1->Enabled = true; |
Una opción más pensada para usar dentro de un Thread:
[Waitable Timer Objects]
https://msdn.microsoft.com/en-us/library/windows/desktop/ms687012.aspx
Y si no necesitas precisión podrías usar lo siguiente sin Timer ni nada dentro del Execute:
| Código: | while (!Terminated) {
Sleep(1000);
Synchronize(UpdateCaption);
} |
|
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Sab 04 Nov, 2017 9:04 pm Asunto: |
|
|
Estupendo,
Voy a probarlo a ver que tal, el while también lo he probado y funciona bien.
La idea era usar el timer por la costumbre y me es más fácil de controlar, pero la verdad es que me valen las dos cosas.
Muchas gracias Leo
Carlos _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
|