dass z.B. TWinControl.Handle Getter nicht Threadsafe sind. Deshalb habe ich auch die synchronsiert bzw. in Variablen gespeichert.
Das wird vermutlich nicht reichen. Der Zugriff auf
VCL-Controls aus einem Thread heraus ist eben nicht thread-safe. Selbst wenn man ein solches
Handle synchronisiert erhält, bedeutet das nicht, dass es beim nächsten Mal auch noch gültig ist.
VCL-Controls erzeugen immer mal wieder ihr
Handle neu.
Solange die Controls permanent vorhanden sind, kann man Referenzen auf diese verwenden um die entsprechenden Aktionen synchronisiert auszuführen. Innerhalb dieser Aktion kann man auch das
Handle verwenden, solange man sicher ist dass es während der Aktion nicht durch irgendwas neu erzeugt wird. Im Zweifelsfall an jeder Stelle das
Handle Property verwenden und nicht irgendwo zwischenspeichern.