Показать сообщение отдельно
  #2  
Старый 29.07.2022, 22:45
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Естественно, не срабатывает. Ты же блокируешь основной поток приложения:
Код:
procedure TMyThread1.Execute;
begin
  { Если Вы хотите, чтобы процедура DoWork выполнялась лишь один раз - удалите цикл while }
  while not Terminated do
    Synchronize(DoWork);
end;

Synchronize используется только для обновлнения данных в главном потоке. Нельзя все работу потока засунуть туда. Просто получается, что у тебя поток тупо блокирует главный поток приложения.
Править не буду, бо как надо перелопатить всю процедуру потока...
Ответить с цитированием