А> UpdateDataDestroy(); // останавливает поток ThrIDDataUpdate
Что за метод такой? Я думал поток останавливается методом Suspend().
procedure UpdateDataDestroy();
begin
with ThrIDDatUpdate do begin
if ( not Terminated ) then TerminateAndWaitFor;
end;
end;
Не очень силен в потоках но попробуй так. Да, и помнится специально освобождать память выделенную под поток не обязательно, потому что после метода Execute автоматически вызывается стандартную процедуру Delphi EndThread(), которая вызывает функцию Win32 API ExitThread(), по завершении работы которой поток перестанет существовать и вся выделенная ему память будет корректно освобождена.