Y yo me pregunto, por que ejecutar un thread cada 10 segundos. Me explico, no tiene mucho sentido crear un thread, ejecutarlo y destruirlo cada 10 segundos. Me parece mas razonable que ya que tenemos un thread corriendo de forma paralela al proceso principal, simplemente utilizar un bucle y la instrucción Sleep. Algo así:
Código Delphi
[-]
procedure TMyThread.Execute;
begin
inherited;
repeat
Sleep(10000);
until Terminated;
end;
Una posible mejora seria utilizar un evento y la instrucción WaitForSingleObject en vez de Sleep y Terminated, de esta forma el bucle terminaría inmediatamente al señalizar el evento, sin tener que esperar.