Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Thread Synchron Problem (https://www.delphipraxis.net/115327-thread-synchron-problem.html)

4dk2 10. Jun 2008 14:00


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:
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


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