Process beendet sich nicht

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
juelin
Beiträge: 260
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Process beendet sich nicht

Beitrag von juelin »

Hallo,
habe ein Lazarusprogramm.
Beim Beenden des Programms setzte ich im Event OnFormClose den Befehl CloseAction:=caFree; ab.
Der Event FormDestroy wird auch ausgeführt.
Aber der Prozess beendet sich nicht.
Im Taskmanager ist der Prozess noch drin.
Kann mir da jemand helfen?
Danke und Gruß
Jürgen

Soner
Beiträge: 732
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Process beendet sich nicht

Beitrag von Soner »

Dein Fehler sieht aus, als ob du noch ein Thread laufen hast, oder eine Schleife mit "Application.ProcessMessages" laufen hast, kontrolliere danach.

Benutzeravatar
Zvoni
Beiträge: 378
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Process beendet sich nicht

Beitrag von Zvoni »

Application.Terminate?
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
juelin
Beiträge: 260
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: Process beendet sich nicht

Beitrag von juelin »

Danke für Eure Ideen.
Muss wohl mit dem Application.ProcessMessages zusammen hängen.
Ich habe im Programm 2 Timer,
Der 1. Timer läuft mit 500 ms.
Der 2. Timmer lauft mit 2000 ms.
Wenn ich aber im 1. Timer den Befehl Application.ProcessMessages raus nehme,
so bleibt das Programm stehen (der 2. Timer bekommt keine Rechenzeit mehr).
der Befehl Application.Terminate bringt gar nichts.
Habt Ihr noch Ideen?
Danke und Gruß
Jürgen

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1648
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Process beendet sich nicht

Beitrag von fliegermichl »

Timerbehandlungsroutinen sollten immer nur kurz laufen und dann gleich wieder verlassen werden.
Da ist am Design der Anwendung etwas verkehrt.

Benutzeravatar
Zvoni
Beiträge: 378
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Process beendet sich nicht

Beitrag von Zvoni »

Unabhängig vom Thema: Wieso überhaupt 2 Timer?
Timer1-Intervall=500 ms
Timer2-Intervall=2000 ms

Wäre jetzt erstmal auf einen Timer gegangen mit ner case Of/If Then Klausel.

Der Code für Timer2 wird immer nur dann ZUSÄTZLICH ausgeführt, wenn Timer1 das VIERTE mal aufgerufen wird.

Vielleicht ensteht durch die zwei Timer ein Deadlock, und man könnte es damit vielleicht umgehen.
Zum Beenden des Programms im FormClose dann einfach den Timer deaktiveren bevor beendet wird

EDIT
fliegermichl hat geschrieben: Di 1. Okt 2024, 09:49 Timerbehandlungsroutinen sollten immer nur kurz laufen und dann gleich wieder verlassen werden.
Da ist am Design der Anwendung etwas verkehrt.
Sein Programm heisst "Flight Radar", und ich kenne das "offizielle" Programm gleichen Namens.
Ich tippe mal darauf, dass (zumindest einer davon) die Timer eine Aktualisierung seiner Oberfläche durchführen, damit man sehen kann, wie die Flugzeuge sich bewegen
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
juelin
Beiträge: 260
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: Process beendet sich nicht

Beitrag von juelin »

Also die Timer werden bei FormOnCloseQuery deaktiviert.

Benutzeravatar
theo
Beiträge: 10893
Registriert: Mo 11. Sep 2006, 19:01

Re: Process beendet sich nicht

Beitrag von theo »

Passiert das nur in der IDE (besser gesagt unter dem Debugger), oder auch wenn es frei läuft?
Hast du schon mal mit dem Debugger geschaut, wo es hängen könnte?

Rheinländer
Beiträge: 6
Registriert: Di 1. Okt 2024, 13:05

Re: Process beendet sich nicht

Beitrag von Rheinländer »

Hallo juelin, du sollte immer gewährleisten, dass die Routine im TimerEvent gerade nicht läuft, wenn die Applikation geschlossen wird. Im schlimmsten Fall greift die Routine auf Objekte zu die im CloseEvent freigegeben werden. Das kann zu diese Effekte komme.

Benutzeravatar
juelin
Beiträge: 260
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: Process beendet sich nicht

Beitrag von juelin »

ok, Danke für die vielen Infos.
Es war der Application.ProcessMessage.
Man kan den Timer schliesen, aber der Application.ProcessMessage macht extra Prozesse.
Und die müssen auch erst geschlossen bzw. abgebrochen werden.
Alles Gute
Jürgen

Antworten