* Added WaitFor to fix 18044

git-svn-id: trunk@16468 -
This commit is contained in:
michael 2010-11-28 20:15:22 +00:00
parent df8413a422
commit 6954c0a598

View File

@ -182,6 +182,7 @@ Type
TFPThreadedTimerDriver = Class(TFPTimerDriver) TFPThreadedTimerDriver = Class(TFPTimerDriver)
Private Private
FThread : TFPTimerThread; FThread : TFPTimerThread;
Procedure DoNilTimer(Sender : TObject);
Public Public
Procedure StartTimer; override; Procedure StartTimer; override;
Procedure StopTimer; override; Procedure StopTimer; override;
@ -242,10 +243,17 @@ end;
TFPThreadedTimerDriver TFPThreadedTimerDriver
---------------------------------------------------------------------} ---------------------------------------------------------------------}
Procedure TFPThreadedTimerDriver.DoNilTimer(Sender : TObject);
begin
FThread:=Nil;
end;
Procedure TFPThreadedTimerDriver.StartTimer; Procedure TFPThreadedTimerDriver.StartTimer;
begin begin
FThread:=TFPTimerThread.CreateTimerThread(Self); FThread:=TFPTimerThread.CreateTimerThread(Self);
FThread.OnTerminate:=@DoNilTimer;
FThread.Resume; FThread.Resume;
end; end;
@ -253,8 +261,9 @@ Procedure TFPThreadedTimerDriver.StopTimer;
begin begin
FThread.FTimerDriver:=Nil; FThread.FTimerDriver:=Nil;
FThread.Terminate; // Will free itself. FThread.Terminate; // Will free itself.
FThread:=Nil;
CheckSynchronize; // make sure thread is not stuck at synchronize call. CheckSynchronize; // make sure thread is not stuck at synchronize call.
If Assigned(FThread) then
Fthread.WaitFor;
end; end;