Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Apptype Console (https://www.delphipraxis.net/14719-apptype-console.html)

Ramses 14. Jan 2004 14:50


Apptype Console
 
Hallo.

Ich habe ein Konsolenprog. entwickelt, das ich sowohl unter Delphi als auch Kylix erzeugen lässt. In dem Programm wird nur ein Indy TCP Server gestartet der auf Kommandos wartet. Der einfachheit halber habe ich alles in ein Thread - Object gepackt.

Jetzt mein Problem.
Ich starte den Server in der Methode Execute. Dann passiert ja eigendlich nicht mehr, sprich es sollte einfach nur noch laufen. Wenn ich aber jetzt einfach eine Repeat Until Terminated einsetze verheitze ich ja sämtliche CPU Zeit. Wie gebe ich die bei einem Konsolenprgramm frei? Application.ProcessMessages steht mir ja nicht zur Verfügung.

Viele Grüsse,
Björn

choose 14. Jan 2004 15:20

Re: Apptype Console
 
Hallo Ramses,

sieh mal in der OH unter TThread.WaitFor nach. Vielleicht lässt sich Dein Problem so schon lösen?

Ramses 14. Jan 2004 16:23

Re: Apptype Console
 
Nein, leider nicht so einfach.
'Waitfor' wartet ja nur, bis die Methode Execute beendet ist. Nur die darf nicht beendet werden, solange nicht Terminated = True ist.

Hier mal der Problem Code:

Delphi-Quellcode:
procedure Tossrv.Execute;
begin
 server.active := true;

 repeat
  if not server.Active then terminate;
 until Terminated;
end;
Ist ja nicht wirklich schön. Saugt CPU - Time ohne Ende. Unter Windows wüsste ich rat, aber als Konsolenanwendung ?!

choose 14. Jan 2004 18:07

Re: Apptype Console
 
Wenn Du wirklich pollen willst, solltest Du den Thread kurze Zeit anhalten. Wie sähe Deine Lösung unter Windows aus?

Ramses 14. Jan 2004 19:44

Re: Apptype Console
 
Unter Windows würde ich Application.ProcessMessages einfügen.
Nur steht mir unter der Konsolenanwendung dieses nicht zur Verfühgung.

BungeeBug 14. Jan 2004 19:50

Re: Apptype Console
 
Gibt GetTickCount unter Linux?

Wenn ja kannst du die Delay Funktion von Luckie hier aus dem Forum nehmen ...

cYaONE 14. Jan 2004 19:54

Re: Apptype Console
 
Mach mal Sleep(1000) in die Schleife rein, dann sollte das ohne Probleme laufen!

Chewie 14. Jan 2004 20:18

Re: Apptype Console
 
Zitat:

Zitat von cYaONE
Mach mal Sleep(1000) in die Schleife rein, dann sollte das ohne Probleme laufen!

Sleep ist auch eine Funktion der WinAPI. Ein Linux-Äqivalent heißt mglweise anders.

Ramses 14. Jan 2004 22:30

Re: Apptype Console
 
Das mit dem Sleep geht auch unter Linux. Hatte ich nicht mehr dran gedacht.
Es reicht schon ein Sleep(500).

Danke nochmal an alle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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