Ответ 1
Это нормально. Вы проверяете Terminated
, что хорошо. Если ваш слушатель позволяет это и ваше использование процессора слишком велико, вы можете замедлить поток, поставив там Sleep (1), но я думаю, что это не понадобится.
Я написал класс Thread.descendent и в методе execute я поставил бесконечный цикл для прослушивания события com, считается плохой практикой Threading, используя бесконечный цикл для этого? приложения работают нормально, не замораживаются и всегда реагируют, я просто отвечаю, потому что я хочу использовать лучший метод для потоковой передачи.
procedure TMyThread.Execute;
begin
while True and not Terminated do
begin
AResult:= FListener.GetResult(Param1,Param2,5000);
if not VarIsNull(AResult) then
Synchronize(Process);
end;
end;
Это нормально. Вы проверяете Terminated
, что хорошо. Если ваш слушатель позволяет это и ваше использование процессора слишком велико, вы можете замедлить поток, поставив там Sleep (1), но я думаю, что это не понадобится.
Компилятор преобразует это в:
while not Terminated do
При написании этого пути я уверен, что вы согласитесь, что это выглядит совершенно естественно. Это очень распространенная идиома.