Das hier ist dein "Todesurteil":
Delphi-Quellcode:
procedure TTrace_Frm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Trace_List.Free;
end;
Das Objekt wird freigeben, obwohl nach .Free noch weitere Methoden aufgerufen werden (unsichtbar von der
VCL).
Es hängt vom Zufall bzw. vom Stack ab, wann und wo es knallt.
Deshalb gibt es die Methode
Release.
Delphi-Quellcode:
procedure TTrace_Frm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Release; // kann gefahrlos aufgerufen werden
end;
Release wartet bis alle Windows-Botschaften verarbeitet wurden und gibt dann erst (verzögert) das Formular frei.