Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Endlos Thread - wie einbetten? (https://www.delphipraxis.net/84321-endlos-thread-wie-einbetten.html)

jaikai 15. Jan 2007 12:12


Endlos Thread - wie einbetten?
 
Moin,

Mir ist nicht klar, wie man einen Thread endlos (bis terminated) laufen lassen kann.

Ursprünglich hat der Windows-Timer einen neuen Thread erzeugt, wenn der alte durch war. Das wird mit nem Code 5 - Win32-Error gelegentlich bei Programmende quittiert. Also möchte ich nun den Thread nur einmal erzeugen.
Soweit klappt das auch und ohne Error bei Ende.

Allerdings läuft er wohl nur einmal durch...

Wie mach ich dem Thread klar, daß er sich immer wieder wiederholen muß. Vor allem wo muss Code hinzu?


Erzeugung:
Delphi-Quellcode:
type
  TCheckit = class(TThread)
    procedure Execute; override;
    procedure Laufschon;
    end;
var  Checkit: TCheckit;

Delphi-Quellcode:
procedure Execute;
begin
  synchronize(Laufschon);
end;


procedure TimerCallback( TimerID, Msg : UINT; dwUser, dw1, dw2 : DWord); pascal;
begin
  if Neuerzeugen <> 'besetzt' then begin
     // Alte Methode - neuen erzeugen stand hier
     Checkit.Resume;                       // Thread aktivieren
     end;
end;


Aufruf jetzt aus anderer Aufrufroutine heraus:
...
Checkit := TCheckit.Create(true);   // Thread inaktiv erzeugen
Checkit.FreeOnTerminate := false;      // Thread nach dem Beenden freigeben

// Aufruf alt:  
//FID := TimeSetEvent ( 10000, 1000, @TimerCallback, 0, TIME_PERIODIC);

Angel4585 15. Jan 2007 12:21

Re: Endlos Thread - wie einbetten?
 
Zitat:

Zitat von jaikai
Delphi-Quellcode:
procedure Execute;
begin
while not Terminated do
  begin
  synchronize(Laufschon);
  sleep(1);
  end;
end;

Das wars :mrgreen:

sirius 15. Jan 2007 12:28

Re: Endlos Thread - wie einbetten?
 
1. das von Angel.
2. Du solltest den Teil, den der Thread alleine macht, aus dem synchronize herausholen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 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-2025 by Thomas Breitkreuz