Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
15. Aug 2009
ExceptObject verwendet zumindest in Delphi 2006 die threadspezifische Variable RaiseListPtr - ich meine allerdings auch, dass die on-Klausel hier geeigneter ist.
Was meinst du mit "stille Exceptions schlagen nicht im Exceptionhandler auf"? In TApplication.HandleMessage muss auch explizit auf EAbort geprüft werden.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
15. Aug 2009
Gut, dass du das erwähnst. :mrgreen: OnTerminate wird per Synchronize aufgerufen, was ohne spezielle Vorkehrungen bei Konsolenanwendungen nicht funktioniert.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
15. Aug 2009
Das gibt einen Deadlock: OnTerminate wird indirekt vom Thread selbst aufgerufen. Der Thread blebit zwangsläufig am Leben, bis OnTerminate zurückkehrt.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
15. Aug 2009
Unabhängig davon, weshalb OnTerminate nicht aufgerufen wird, ist dein Event-Handler falsch. Du darfst den Thread dort nicht freigeben, weil er noch intern benötigt wird. Wenn du ihn tatsächlich direkt bei der Terminierung freigeben willst, kannst du auch FreeOnTerminate auf true setzen.