Thema: Delphi Thread Synchron Problem

Einzelnen Beitrag anzeigen

4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#1

Thread Synchron Problem

  Alt 10. Jun 2008, 14:00
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
  Mit Zitat antworten Zitat