Цитата:
	
	
		| 
			
				 Сообщение от Delphinaut 
				Попробуйте, например, так: 
	Код: 
	  // ...
  TMyThread = class(TThread)
  private
  protected
    procedure Execute; override;
  end;
// ...
var myThread: TMyThread = nil;
    myThreadID: Cardinal = 0;
procedure TMyThread.Execute;
begin
  // Код
  // ...
  // Бесконечный цикл, чтобы проверить, что поток действительно уничтожается
  while True do
  begin
    Synchronize(
      procedure
      begin
        // Код, который работает с VCL
        Form1.Label1.Caption := 'Время: ' + TimeToStr(Time) +
          ' | Объектов: ' + IntToStr(Random(10000)) +
          ' | Поток: ' + IntToStr(myThreadID);
      end
    );
    Sleep(1000);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  if myThread <> nil then TerminateThread(myThread.Handle, 0);
  inc(myThreadID);
  myThread := TMyThread.Create(True);
  myThread.FreeOnTerminate := True;
  myThread.Priority := tpNormal;
  myThread.Resume;
end;
// ... 
 
Проследить за тем, что количество потоков не растёт, можно в диспетчере задач, выбрав "Вид - Выбрать столбцы..." и установив флажок напротив "Счетчик потоков".  
			
		 | 
	
	
 
То, что нужно, всё получилось, спасибо за помощь 
