Показать сообщение отдельно
  #1  
Старый 14.04.2018, 15:21
nixon232 nixon232 вне форума
Активный
 
Регистрация: 26.01.2014
Сообщения: 282
Версия Delphi: delphi xe4
Репутация: выкл
По умолчанию Поток + Set|KillTimmer

Подскажите в чем может быть проблема.
Обработчик таймера
Код:
procedure TЬForm.WMTimer(var Msg: TWMTimer);
begin
  try
    try

      Thr.initWork(Msg.TimerID);
      //  ShowMessage(BoolToStr(KillTimer(Self.Handle, msg.TimerID), True));
      Msg.Result := 0;

    except

    end;
  finally
    KillTimer(Handle, Msg.TimerID);
    inherited;
  end;

end;
InitWork
Код:
begin
  FLock.Enter;
  try
    if not FOnTime then
    begin
      fOnTime:=True;
      ....
      fOnTime:=false;

    end;

  finally
    FLock.Leave
  end;
end;
все работает хорошо, если таймер создается 1, если таймеров 2+, то FOnTime всегда true. Таймеры создаются с достаточной задержкой друг от друга. Лог и время тика каждого таймера прилагаю.
Код:
[14:11:42:253] Add Worker: Id: 1, Time: 7000 
[14:11:42:759] Add Worker: Id: 2, Time: 8500 
[14:11:43:264] Add Worker: Id: 3, Time: 10500 
Формально будет всегда False. FOnTime наступить не должно и проверку можно убрать, но вопрос не в этом, а почему оно наступает
Ответить с цитированием