Подскажите в чем может быть проблема.
Обработчик таймера
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | procedure TЬForm . WMTimer( var Msg: TWMTimer);
begin
try
try
Thr . initWork(Msg . TimerID);
Msg . Result := 0 ;
except
end ;
finally
KillTimer(Handle, Msg . TimerID);
inherited ;
end ;
end ;
|
InitWork
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | begin
FLock . Enter;
try
if not FOnTime then
begin
fOnTime:= True ;
....
fOnTime:= false ;
end ;
finally
FLock . Leave
end ;
end ;
|
все работает хорошо, если таймер создается 1, если таймеров 2+, то FOnTime всегда true. Таймеры создаются с достаточной задержкой друг от друга. Лог и время тика каждого таймера прилагаю.
Код:
1 2 3 | [ 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 наступить не должно и проверку можно убрать, но вопрос не в этом, а почему оно наступает