Esa variable global si es una chapuza. Tu buclq debe tener la condición de terminar si Terminated == ture:
Código:
void __fastcall TMyThread::Execute()
{
while (!Terminated){
//........
}
}
Mira a ver si tienes mal diseñada tu lógica en el bucle y si es infinito...
Saludos.