Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm quittiert den Dienst bei nem sleep? (https://www.delphipraxis.net/136146-programm-quittiert-den-dienst-bei-nem-sleep.html)

Angel4585 24. Jun 2009 11:07


Programm quittiert den Dienst bei nem sleep?
 
Hallo,

an einer etwas ungewöhnlichen Stelle hört mein Programm einfach auf zu arbeiten:

Delphi-Quellcode:
try
    for i := 0 to 19 do
      begin
      snlogger.Log('a'+IntToStr(i));
      Application.ProcessMessages;
      snlogger.Log('b'+IntToStr(i));
      sleep(500);//Ab hier passiert nichtsmehr
      snlogger.Log('c'+IntToStr(i));
      Application.ProcessMessages;
      snlogger.Log('d'+IntToStr(i));
      SNTCPClient1.Write(C_PING);  
      snlogger.Log('e'+IntToStr(i));
      end;
finally
snlogger.log('finally');
end;
Er steigt da nicht immer aus, nur ab und zu, manchmal läuft das da auch durch.
Das finally wird nicht ausgeführt, es passiert einfach garnichtsmehr.
Das Programm kommuniziert mit einem Dienst. Der Dienst meldet nichts, bis auf das die Verbindung weg ist. Wenn ich mitm TCP Viewer schaue sind die tatsächlich weg. Es kommt keine Fehlermeldung und garnichts...
Das seltsame ist, das Programm beendet sich nicht, sondern ist nachwievor als Task aktiv.

Hat jemand en Tipp wie ich mich dem Problem nähern könnte? :gruebel:

blauweiss 24. Jun 2009 11:35

Re: Programm quittiert den Dienst bei nem sleep?
 
Hallo,

ein Tip von mir: lass mal die Application.ProcessMessages weg.

blauweiss

Angel4585 24. Jun 2009 12:09

Re: Programm quittiert den Dienst bei nem sleep?
 
Die hab ich erst reingemacht als das Problem auftrat, aber kann sie gern wieder rausmachen

Mithrandir 24. Jun 2009 12:41

Re: Programm quittiert den Dienst bei nem sleep?
 
Wofür brauchst du den Sleep-Befehl eigentlich?

Angel4585 24. Jun 2009 13:56

Re: Programm quittiert den Dienst bei nem sleep?
 
Das ist ein Simulationsprogramm, das soll einfach ne weile warten und ausser dem Gegenüber alle 500ms eine Nachricht zu senden nichts tun und sich dann beenden.

Luckie 24. Jun 2009 14:03

Re: Programm quittiert den Dienst bei nem sleep?
 
Und warum nimmst du dazu keinen Timer? Der ist doch gerade prädestiniert für eine solche Aufgabe.

Angel4585 24. Jun 2009 14:07

Re: Programm quittiert den Dienst bei nem sleep?
 
Dann muss ich an der Stelle trotzdem
-Timer anschalten
-warten
-Timer ausschalten

sprich, warten muss ich so oder so.

Aber ich werd das mit Timer mal ausprobieren, ma schaun was rauskommt.

Fridolin Walther 24. Jun 2009 14:13

Re: Programm quittiert den Dienst bei nem sleep?
 
Zitat:

Zitat von Angel4585
Dann muss ich an der Stelle trotzdem
-Timer anschalten
-warten
-Timer ausschalten

sprich, warten muss ich so oder so.

Nicht ganz ... Du sagst dem Timer er soll alle 500 ms ein Event erzeugen. Im Event Handler (OnTimer) sendest Du dann das gewünschte Signal und inkrementierst einen Counter. Wenn der Counter dann beim gewünschten Wert ist, deaktivierst Du den Timer einfach wieder. Letztlich warten tust Du nirgendwo ;).

Angel4585 24. Jun 2009 14:16

Re: Programm quittiert den Dienst bei nem sleep?
 
Ja aber wie gesagt es ist eine Simulation, tatsächlich wird der Timer nebenher laufen und im Hauptprogramm oder nem separaten Thread wird was abgearbeitet.
Wenn das fertig abgearbeitet ist wird der Timer angehalten und ne Nachricht zum Gegenüber gesendet dass das Programm fertig ist.

guidok 24. Jun 2009 20:12

Re: Programm quittiert den Dienst bei nem sleep?
 
Zitat:

Zitat von Angel4585
Ja aber wie gesagt es ist eine Simulation, tatsächlich wird der Timer nebenher laufen und im Hauptprogramm oder nem separaten Thread wird was abgearbeitet.
Wenn das fertig abgearbeitet ist wird der Timer angehalten und ne Nachricht zum Gegenüber gesendet dass das Programm fertig ist.

Und was willst du nun damit sagen? Das kannst du doch mit dem Timer und dem OnTimer-Event alles machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz