[Lazarus] TFPTimer, Linux
Michael Van Canneyt
michael at freepascal.org
Wed Jan 15 16:06:12 CET 2014
On Wed, 15 Jan 2014, Antonio Fortuny wrote:
> Hi Folks.
>
> Following a Michael advice I changed a TTimer by an TFPTime component in a
> Linux daemon application but the latter doesn't work.
> There is the code snippet of the TFPTime OnTimer event:
>
> procedure TDaemon1.ThreadControlTimerTimer(Sender: TObject);
> var
> Res: Boolean;
> begin
> // se réveille toutes les 10 secondes pour vérifier l'état du thread
> FLog.Add(9, '1++++', esError);
> try
> FLog.Add(9, '2++++', esError);
> except
> on E: Exception do begin
> FLog.Error(Format('>>+++ error on log control thread:%s',
> [E.Message]));
> Res := False;
> end;
> end;
> FLog.Add(9, '3++++', esError);
> try
>
> FLog.Add(9, '4++++', esError); <<------------- this line appears into
> the log file
>
> ThreadControlTimer.Enabled := False;
>
> FLog.Add(9, '5++++', esError); <<======= this line is never reached
>
> Res := DoThreadControl;
> FLog.Add(9, '6++++', esError);
> except
> on E: Exception do begin
> FLog.Error(Format('>>+++ error on control thread:%s', [E.Message]));
> Res := False;
> end;
> end;
> if Res then begin
> FLog.Add(9, '7++++ True', esError);
> ThreadControlTimer.Enabled := True;
> end else begin
> FLog.Add(9, '8++++ False', esError);
> end;
> end;
>
> It looks like the Enabled property doesn't work and blocks the TFPTimer in
> some way. The event is fired on time, but only once and never more.
> I'dl be glad to know what happens.
DaemonApp works using threads.
TFPTimer is not usable in threads other than the main thread.
Michael.
More information about the Lazarus
mailing list