OK, weitestgehend verstanden (Hoffe ich)
Rein theoretisch und vor allem für mein Verständnis:
- TMultiReadExclusiveWriteSynchronizer würde das Problem beseitigen da hier mehrer Lese-Zugriffe möglich wären und diese Werte nie vom Main gesetted werden?
- Eigene Section für jedes Property würden das Problem verringern, da es nur beim Zugriff auf dieselbe Prop klemmen würde?
- Hängt der Thread nicht auch bei deinem invokeChangeEvent bis sich die GUI gepinselt hat?
- Und müsste das, wenn separat verschickt, nicht auch in eine CS da ja sonst Main und Thread auf data zugreifen könnten?
Delphi-Quellcode:
procedure TMyThread.invokeChangeEvent();
var
_handler: TDataChangeEventHandler;
begin
_handler := getOnChange();
if Assigned(_handler) then
_handler(data);
end;