Hi,
also ich nutze jetzt ein Event, dass ich im Thread setzte wenn der Thread angehalten hat.
Delphi-Quellcode:
while fShouldStopp do
begin
fStoppEvent.SetEvent; // Hier wird das Event gesetzt!!
//fWoBinIch:=6;
Sleep(1);
if Self.Terminated then break;
if Application.terminated then break;
end;
end;
fStoppEvent.ResetEvent; // Hier wird das Event wieder zurückgesetzt
Nun mache ich folgendes in meinem Hauptthread:
Delphi-Quellcode:
*******************************************************************************
Prozedur zum stoppen des Hintergrund Tasks
*******************************************************************************)
procedure TfrmMain.StoppBackgroundTask;
begin
if Assigned(aCyclicDataThread) then
begin
aCyclicDataThread.PleaseStopp;
WaitForSingleObject(aCyclicDataThread.fStoppEvent.Handle,INFINITE); // Warten auf das Event
end; // of if Assigned(aCyclicDataThread) then
end;// of procedure TFrmMain.StoppBackgroundTask;
////////////////////////////////////////////////////////////////////////////////
PleaseStopp ist eine Prozedur des Threads und sieht folgendermaßen aus:
Delphi-Quellcode:
procedure TCyclicData.PleaseStopp;
begin
fSyncObj.Acquire;
try
fShouldStopp:=true;
finally
fSyncObj.Release;
end;
end;
Sollte ich jetzt hier irgendwas umstellen???