Warum sollte Synchronize()
zu Deadlocks führen? Es ist gerade dazu da, um einen Thread mit dem Mainthread zu synchronisieren und die Aktionen entsprechend dann erst auszuführen.
Ja, aber in älteren Versionen von Delphi durfte man es nicht im Hauptthread aufrufen. Mittlerweile wird aber auch das korrekt behandelt, ebenso bei TThread.Queue und anderen solchen Funktionen. Wenn man also eine relativ aktuelle Version benutzt, braucht man da nicht mehr drauf zu prüfen, sondern kann es einfach aufrufen.