mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-06 00:27:22 +01:00
* Fixed bug ID #23444, improved example to show elapsed time
git-svn-id: trunk@23247 -
This commit is contained in:
parent
b3de56a540
commit
f2ee6bcb77
@ -14,6 +14,7 @@ Type
|
|||||||
FTimer : TFPTimer;
|
FTimer : TFPTimer;
|
||||||
FCount : Integer;
|
FCount : Integer;
|
||||||
FTick : Integer;
|
FTick : Integer;
|
||||||
|
N : TDateTime;
|
||||||
Public
|
Public
|
||||||
Procedure DoRun; override;
|
Procedure DoRun; override;
|
||||||
Procedure DoTick(Sender : TObject);
|
Procedure DoTick(Sender : TObject);
|
||||||
@ -29,11 +30,12 @@ begin
|
|||||||
Try
|
Try
|
||||||
FTick:=0;
|
FTick:=0;
|
||||||
FCount:=0;
|
FCount:=0;
|
||||||
|
N:=Now;
|
||||||
While (FCount<10) do
|
While (FCount<10) do
|
||||||
begin
|
begin
|
||||||
Inc(FTick);
|
Inc(FTick);
|
||||||
CheckSynchronize; // Needed, because we are not running in a GUI loop.
|
|
||||||
Sleep(1);
|
Sleep(1);
|
||||||
|
CheckSynchronize; // Needed, because we are not running in a GUI loop.
|
||||||
end;
|
end;
|
||||||
Finally
|
Finally
|
||||||
FTimer.Enabled:=False;
|
FTimer.Enabled:=False;
|
||||||
@ -44,10 +46,15 @@ end;
|
|||||||
|
|
||||||
Procedure TTestTimerApp.DoTick(Sender : TObject);
|
Procedure TTestTimerApp.DoTick(Sender : TObject);
|
||||||
|
|
||||||
|
Var
|
||||||
|
D : TDateTime;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Inc(FCount);
|
Inc(FCount);
|
||||||
Writeln('Received timer event ',FCount,' after ',FTick,' ticks.');
|
D:=Now-N;
|
||||||
|
Writeln('Received timer event ',FCount,' after ',FTick,' ticks. (Elapsed time: ',FormatDateTime('ss.zzz',D),')');
|
||||||
FTick:=0;
|
FTick:=0;
|
||||||
|
N:=Now;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -216,7 +216,7 @@ end;
|
|||||||
procedure TFPTimerThread.Execute;
|
procedure TFPTimerThread.Execute;
|
||||||
var
|
var
|
||||||
SleepTime: Integer;
|
SleepTime: Integer;
|
||||||
Last: Cardinal;
|
S,Last: Cardinal;
|
||||||
T : TFPCustomTimer;
|
T : TFPCustomTimer;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@ -229,9 +229,15 @@ begin
|
|||||||
SleepTime := T.FInterval - (_GetTickCount - Last);
|
SleepTime := T.FInterval - (_GetTickCount - Last);
|
||||||
if SleepTime < 10 then
|
if SleepTime < 10 then
|
||||||
SleepTime := 10;
|
SleepTime := 10;
|
||||||
Sleep(SleepTime);
|
Repeat
|
||||||
|
S:=5;
|
||||||
|
If S>SleepTime then
|
||||||
|
S:=SleepTime;
|
||||||
|
Sleep(S);
|
||||||
|
Dec(Sleeptime,S);
|
||||||
|
until (SleepTime<=0) or Terminated;
|
||||||
T:=Timer;
|
T:=Timer;
|
||||||
If Assigned(T) then
|
If Assigned(T) and not terminated then
|
||||||
Synchronize(@T.Timer);
|
Synchronize(@T.Timer);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user