[fpc-pascal] Sleep(30) is not reliable?
Michael Van Canneyt
michael at freepascal.org
Wed Jan 24 19:30:21 CET 2018
On Wed, 24 Jan 2018, AlexeyT wrote:
> In Lazarus component EControl I call Sleep(30) to wait when timer tick
> work is done.
>
> while FBusy do Sleep(30);
How is the FBusy set to false ?
You should add an Application.Processmesages in this loop, otherwise the
timer tick (or whatever event sets FBusy to false) will never happen ?.
while FBusy do
begin
Sleep(30);
Application.ProcessMessages;
end;
Michael.
>
> and app loops forever now in sleep().
>
> procedure Sleep(milliseconds: Cardinal);
> Var
> timeout,timeoutresult : TTimespec;
> res: cint;
> begin
> timeout.tv_sec:=milliseconds div 1000;
> timeout.tv_nsec:=1000*1000*(milliseconds mod 1000);
> repeat
> res:=fpnanosleep(@timeout, at timeoutresult);
> timeout:=timeoutresult;
> until (res<>-1) or (fpgeterrno<>ESysEINTR);
> end;
>
> It is fpc 3.0.2. IDE Lazarus shows long loop inside this 'repeat'. i
> waited 10-20seconds.
>
>
> --
> Regards,
> Alexey
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list