AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi eigenartiges Verhalten bei Onclose eines Formulars
Thema durchsuchen
Ansicht
Themen-Optionen

eigenartiges Verhalten bei Onclose eines Formulars

Ein Thema von SusiT · begonnen am 11. Okt 2023 · letzter Beitrag vom 13. Okt 2023
 
SusiT

Registriert seit: 15. Mai 2014
29 Beiträge
 
#1

eigenartiges Verhalten bei Onclose eines Formulars

  Alt 11. Okt 2023, 22:29
Guten Abend.

Mir ist ein eigenartiges Verhalten beim Ablauf des Schließens eines Formulars aufgefallen und mich interessiert ob dieses Verhalten bekannt ist.


Der normale Ablauf bei Schließen eines Formulars ist in der Regel folgender:


onClose Event wird ausgelöst (Klick auf Kreuz)

Formularvariable wird Released -> Event wird erzeugt

OnDestroy Prozedur wird aufgerufen


In OnDestroy werden alle möglichen Objekte FreeAndNil gesetzt und die Speicherbereinigung findet statt.


Ich habe ein sehr komplexes Formular mit sehr viel Inhalt.

Jetzt das komische Verhalten:

In bestimmten Konstellationen schaffe ich es, dass das Formular schneller schließt als es tatsächlich seinen eigenen Code durchläuft und abarbeitet.
Wenn ich während der Abarbeitung einer Prozedur des Formulars das Formular schließe (eine Prozedur die eben mehr Zeit benötigt) , dann wird OnDestroy schneller erreicht und ausgeführt als die Abarbeitung der Prozedur die noch in Arbeit ist.
Das hat nen blöden Nebeneffekt. In OnDestroy werden Objekte auf nil gesetzt, die in der noch nicht fertigen Prozedur verwendet werden. Die Folge ist eine Exception mit Zugriffsverletzung und einer ganzen Menge anderer unschöner Fehler.

Jetzt frage ich mich, wie kann ich in oder vor Destroy erkennen, dass noch irgendwelcher Code bearbeitet wird?

Ähnlich wie bei waitfor im Threading.

Dieses parallele Verhalten deutet auch darauf hin, das hier 2 Threads am Laufen sein müssen? Main Thread vom Formular und ein Schließen Thread?



Viele Grüße
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:22 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