Подскажите в чем может быть проблема.
Обработчик таймера
Код:
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 наступить не должно и проверку можно убрать, но вопрос не в этом, а почему оно наступает