Forum: Object-Pascal / Delphi-Language
Delphi
by Leanahtan,
17. Dez 2009
Danke für den Tipp. Leider wird das so wohl auch nicht funktionieren. Das Problem ist, dass besagte For-Schleife letztlich den Aufruf von TNotifyList.Free enthält, und daher nicht weiter abgearbeitet werden kann, wenn man im Destructor wartet :gruebel:
Das lässt sich auch nicht vermeiden, denn die in der Schleife bearbeiteten Events können Skriptfunktionen aufrufen - und was dort gemacht wird,...
Forum: Object-Pascal / Delphi-Language
Delphi
by Leanahtan,
17. Dez 2009
Danke für die schnelle Antwort. Also die Idee mit dem Flag hatte ich auch schon, und hab ich auch schonmal so umgesetzt.
if fNotifyList.RunningEventCalls=0 then
fNotifyList.Free
else
fNotifyList.WantDestroy:=true;
In der Schleife würde dann geprüft, ob die NotifyList zerstört werden soll. Was mich an dieser Lösung etwas stört - eine entsprechende Abfrage wäre dann in fast...
Forum: Object-Pascal / Delphi-Language
Delphi
by Leanahtan,
17. Dez 2009
In unserem Projekt gibt es einen Typ TNotifyList zur Verwaltung von Events. Dieser ist Bestandteil der meisten anderen Objekttypen, und wird daher im constructor dieser Typen erfeugt, und im Destructor mit Free wieder freigegeben. Nun gibt es aber eine Möglichkeit, dass eine Methode von TNotifyList noch in einem Schleifendurchlauf hängt, während Free aufgerufen wird, was letztlich zu einem...