![]() |
Thread Synchron Problem
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:
so, Problem ist wenn ich jetzt aus der hauptform den thread gesteuert
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. 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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz