Как остановить поток в delphi?

Пользователь

от roma , в категории: Другие , год назад

Как остановить поток в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от lamar , 5 месяцев назад

@roma 

В Delphi есть несколько способов остановить поток. Один из самых простых способов это установить флаг остановки в потоке и проверять его в цикле ожидания. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
type
  TMyThread = class(TThread)
  private
    FStopFlag: Boolean;
  protected
    procedure Execute; override;
  public
    constructor Create;
    procedure Stop;
  end;

constructor TMyThread.Create;
begin
  inherited Create(False);
  FStopFlag := False;
end;

procedure TMyThread.Stop;
begin
  FStopFlag := True;
end;

procedure TMyThread.Execute;
begin
  while not FStopFlag do
  begin
    // код потока
  end;
end;


Чтобы остановить поток, вызовите метод Stop:

1
MyThread.Stop;


Если вы хотите, чтобы поток остановился немедленно, вы можете использовать функцию TerminateThread из модуля Windows, но это не рекомендуется, так как это может привести к неожиданным последствиям и негативно сказаться на работе приложения.


Еще один способ остановить поток - это вызвать метод Terminate у объекта потока. Этот метод выставляет флаг Terminated, который можно проверя