Muy buenas!!!!
Aquí os paso una posible solución para temporizar un thread en milisegundos....ESPERO QUE OS SEA DE AYUDA..... es una posible solución sin utilizar timers... (no sé a ver que os parece....):
my.hclass Mythread : public TThread
{
private:
SYSTEMTIME systime_Now;
SYSTEMTIME systime_Start;
protected:
void __fastcall Execute(void);
void __fastcall UpdateLabel(void);
public:
bool Cond;
int i;
long lNow;
long lStart;
bool firstloop;
long dif;
__fastcall Mythread(bool CreateSuspended);
};
my.cpp__fastcall Mythread::Mythread(bool CreateSuspended)
: TThread(CreateSuspended)
{
Cond = true;
firstloop = true;
}
//---------------------------------------------------------------------------
void __fastcall Mythread::Execute(void)
{
do
{
GetSystemTime(&systime_Start);
if(first == true)
{
Synchronize(&UpdateLabel)
Sleep(600);// depende del tiempo de ejecución del thread...
}
else
{
GetSystemTime(&systime_Now);
lNow = systime_Now.wMilliseconds + 1000 * (systime_Now.wSecond
+60 * (systime_Now.wMinute + 60 * (long) systime_Now.wHour));
dif = difftime(lNow, lStart);
if(dif >= 1000) // que se ejecute cada segundo...
{
Synchronize(&UpdateLabel)
Sleep(600);// depende del tiempo de ejecución del thread...
}
}
}
while(Cond == true);
}
//---------------------------------------------------------------------------
void __fastcall Mythread::UpdateLabel(void)
{
lStart = systime_Start.wMilliseconds + 1000 * (systime_Start.wSecond +
60 * (systime_Start.wMinute + 60 * (long) systime_Start.wHour));
firstloop = false;
/*
introducir aquí el codigo de ejecución del thread
*/
if(/*condición de salida*/) Cond = false;
}
bYE