Forum: Algorithmen, Datenstrukturen und Klassendesign
by WladiD,
3. Feb 2012
Na in dem Fall muss die zu synchronisierende Methode nach csDestroying abfragen. In deinem Fall:
procedure TMyForm.DoOnDings(Parameter);
begin
if not (csDestroying in ComponentState) then
EditDings.Text := Parameter;
end;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by WladiD,
3. Feb 2012
Aha, OK, hab's zu oberflächig gelesen. Aber der Anwender der Komponente muss doch etwas tun: Create und Free muss schon irgendwo im Code sein (ist ja kein TComponent-Nachkömmling). Und wenn FreeOnTerminate := FALSE ist, dann kann die oben genannte Zugriffsverletzung niemals entstehen.
Also man kann sich grundsätzlich niemals darauf verlassen, dass Sychronize erfolgreich ausgeführt wird, da man...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by WladiD,
3. Feb 2012
Also wenn dein Thread nicht mit FreeOnTerminate := TRUE läuft, dann reicht ein einfaches DeinThread.Free im OnDestroy des Forms aus und alles wird korrekt beendet.