Показать сообщение отдельно
  #1  
Старый 28.07.2011, 14:12
VcSaJen VcSaJen вне форума
Прохожий
 
Регистрация: 28.07.2011
Сообщения: 3
Репутация: 10
Вопрос TIdThread - как немедленно остановить поток и освободить его?

Есть класс TIdThread (Входит в состав Indy9).

Имеется глобальная переменная, в которой содержится класс-наследник TIdThread. Требуется немедленно остановить поток и освободить (Free) его.

но это не получается: Если использовать методы Stop или Terminate, то поток завершится, когда выполнится до конца, а нужно немедленная остановка.

Если использовать такой код:
Код:
  if Assigned(LoginThread) then
  begin
    if LoginThread.Stopped=False then
    begin
      LoginThread.Suspended:=True;
      LoginThread.Terminate;
    end;
    LoginThread.Free;
  end;
То поток немедленно завершится, но программа зависнет на строчке LoginThread.Free;
Ответить с цитированием