Guten Abend allerseits,
ich habe ein Programm am laufen das mehrere Netzwerkverbindungen
offen hat und eventuell mehrere Timer laufen.
Jetzt hab ich regelmäßig beim Schließen der Form das Problem
daß da irgendwie Events gefeuert werden und vermutlich schon Teile der Form
weg sind auf die im Event zugegriffen wird.
Im OnClose schließe ich die Netzwerkverbindungen, aber manchmal kommt da
eine Netzwerkfehlermeldung im OnError Event. Da soll er eine Fehlermeldung ausgeben
und da knallt es dann.
Ich schließe ja schon alles, stoppe alle Timer aber ab und zu kommt halt ein Event.
Wie kann ich das verhindern, oder muß ich da irgendwo eine Pause einbauen damit
die Events durch sind.
Ich bin gerade ziemlich ratlos, zumal ich nicht mal weiß nach was ich suchen soll.
Für Tipps wäre ich wie immer unheimlich dankbar.
Grüße
NoCee
[gelöst] Bei FormClose Events verhindern
-
- Beiträge: 174
- Registriert: Do 3. Mär 2011, 21:34
- OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
- CPU-Target: Intel 32/64Bit, ARM9
- Wohnort: Ulm
[gelöst] Bei FormClose Events verhindern
Zuletzt geändert von NoCee am Mo 22. Nov 2021, 16:39, insgesamt 1-mal geändert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6787
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Bei FormClose Events verhindern
Ich setze die Eventhandlers zurück auf nil. Damit sollten die nicht mehr auf hängende Referenzen zugreifen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1647
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Bei FormClose Events verhindern
Normalerweise ist TForm.OnCloseQuery dafür zuständig.
In CanClose gibst du true zurück, wenn das Formular sicher geschlossen werden kann.
Evtl kann man noch eine boolsche Variable z.B. ClosePending setzen und dann mit einem weiteren Timer
in regelmäßigen Abständen prüfen, ob das Formular nun geschlossen werden kann.
In CanClose gibst du true zurück, wenn das Formular sicher geschlossen werden kann.
Evtl kann man noch eine boolsche Variable z.B. ClosePending setzen und dann mit einem weiteren Timer
in regelmäßigen Abständen prüfen, ob das Formular nun geschlossen werden kann.
-
- Beiträge: 174
- Registriert: Do 3. Mär 2011, 21:34
- OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
- CPU-Target: Intel 32/64Bit, ARM9
- Wohnort: Ulm
Re: Bei FormClose Events verhindern
Ich habs jetzt in OnCloseQuery verlagert
und mehrfach ausprobiert.
OnCloseQuery kannte ich noch nicht.
Derzeit funktioniert das so.
Vorher hab ich noch ausprobiert ob das mit einem sleep() im OnClose
in der letzten Zeile auch funktionieren würde.
Auch das hat funktioniert.
Alle Events anzupacken wäre ein bisschen aufwändig geworden.
Aber ich kann das in Zukunft von vornherein gleich mit einbauen.
Vielen Dank für die Tips
Gruß
NoCee
und mehrfach ausprobiert.
OnCloseQuery kannte ich noch nicht.
Derzeit funktioniert das so.
Vorher hab ich noch ausprobiert ob das mit einem sleep() im OnClose
in der letzten Zeile auch funktionieren würde.
Auch das hat funktioniert.
Alle Events anzupacken wäre ein bisschen aufwändig geworden.
Aber ich kann das in Zukunft von vornherein gleich mit einbauen.
Vielen Dank für die Tips
Gruß
NoCee