Forum: Programmieren allgemein
Delphi
by jaenicke,
3. Jan 2021
Mache es doch wie gesagt im Execute des Threads am Ende. Baue dir einfach eine Methode in dein Datenmodul, die du dort aufrufst.
Das ExecSQL an die Zerstörung eines Objekts statt an die Ablaufslogik (Thread starten, Thread ausführen, Thread beenden, ...) zu binden, ist zumindest bei Threads keine gute Idee.
Forum: Programmieren allgemein
Delphi
by jaenicke,
3. Jan 2021
Bei der Freigabe des Threads (im Destruktor) zerstörst du auch das Datenmodul dmData, führst dort aber bei der Zerstörung noch ein ExecSQL aus?
Das finde ich ein wenig spät. Wie wäre es, wenn du den Thread schon vor dem end des Projektquelltextes deinitialisierst?
Forum: Programmieren allgemein
Delphi
by jaenicke,
2. Jan 2021
Und wie sieht der Stacktrace zu der Meldung aus?
Wie sieht die Routine Threadbeenden aus?
Und wo wird das Datenmodul freigegeben? Gar nicht selbst? Dann passiert der Fehler vielleicht dabei, weil das erst ganz am Ende passiert, wenn schon viel aufgeräumt ist.
Forum: Programmieren allgemein
Delphi
by jaenicke,
2. Jan 2021
Nein, es wird nur Self auf nil gesetzt, also die lokale Referenz auf das Formular. Das hat genau gar keine Wirkung, da Self in der Methode danach gar nicht mehr verwendet wird.