Hallo,
habe folgendes Problem.
habe einen Thread, der solange das Programm läuft
immer wieder die gleiche abfrage macht.
Problem ist das die Abfrage syncronisiert sein muss mit der MainForm.
Delphi-Quellcode:
unit Thread1;
interface
uses
Classes,SysUtils;
type
TThread1 =
class(TThread)
private
{ Private-Deklarationen }
protected
procedure Sync;
procedure Execute;
override;
end;
implementation
uses uFmain;
procedure TThread1.Sync;
begin
if fmain.FTimerLocked
then exit;
fmain.FTimerRunning:=true;
try
//irgendwas...
// MARKER 1
except on Exception do
end;
FTimerRunning:=false;
end;
end;
procedure TThread1.Execute;
begin
Fstartetd:=false;
while not terminated
do
begin
Synchronize(sync);
sleep(1000);
end;
{ Thread-Code hier einfügen }
end;
end.
so, Problem ist wenn ich jetzt aus der hauptform den thread gesteuert
anhalten will:
Delphi-Quellcode:
FTimerLocked:=true;
while FTimerRunning and not Fclosed do
begin
Application.HandleMessage;
//oder
Application.Progressmessages();
sleep(2);
end;
// jetzt was machen ...
............
// dann thread weiter laufen lassen..
FTimerLocked:=false;
Das Problem ist, ist das eine Endlosschleife entsteht, wenn der thread noch
im Bearbeitungsteil also also bei "MARKER 1" ist.
Der Thread wird nämlich wohl von Delphi/Anwendung Suspended. Setzte ich die VAR FTimerRunning manuell im debugger
auf false und lasse die schleife zuendelaufen, läuft danach der thread im bearbeitungsteil weiter.
Ich weiss das man das Problem bei Wait4SingleObj... usw nicht hat. Aber der Thread soll ja
im prinzip unendlich laufen...
danke im vorraus
Karsten