Der Hintergrund-Thread läuft in einer
DLL und erhält eine Callback-Funktion.
Um mir keine Probleme mit den Threading-Schwächen der
VCL einzufangen macht der Callback nichts anderes als eine Nachricht an das Hauptformular zu schicken. Das ist zwar sicher keine Patent-Lösung, entkoppelt aber das Update von dem
DLL-Thread (und es musste schnell gehen).
Diese Nachricht wird entgegengenommen und das Update der sichtbaren Daten (in zwei Schritten) durchgeführt.
1. Abholen/Puffern der Daten aus der
DLL (wg. Performance, brauche die u.U. noch für Darstellung in FUP/KOP)
2. Update der sichtbaren Daten aus o.g. Puffer.
Formübergreifende Zugriffe gibt es in diesem Kontext nicht.
Ich werde mal ein Testprojekt basteln. Wenn das ohne Probleme funktioniert werde ich sukzessiv Code entfernen - habe ich zwar schonmal gemacht, aber in der Verzweiflung letzte Woche möglicherweise was übersehen.
Edit: Ich habe das Datenupdate mal komplett rausgenommen - gleiche Situation wie nach Entfernen der Begin/EndUpdates. Ich bekomme den Cursor wieder dahin wo er hingehört, wenn ich in das Textfeld, bzw. Memo klicke, aber sobald ich im Stringgrid was mache steht er wieder in der Wüste.