Kompilierst du mit Laufzeitpackages oder ohne?
Wenn ohne, dann hat die
DLL ihre eigene
RTL/
VCL und deren eigenen globalen Variablen.
Die EXE hat ebenfalls ihre eigene
RTL/
VCL/Variablen.
Also das Synchronize der
DLL weiß nichts von der
VCL in der EXE und kann demnach nicht richtig arbeiten.
* mit Laufzeitpackages die EXE und
DLL kompilieren
* oder kein Synchronize in der
DLL (z.B. per Callback in der EXE das Synchronize)
* oder siehe CheckSynchronize in Antwort #4 von
http://www.delphipraxis.net/177923-thread-dll.html