Eine Empfehlung noch.
Verwende statt
TMonitor.Enter doch besser
CriticalSections. Wenn mehrere Threads auf dieselben Daten zugreifen (schreibend), dann natürlich eine globale CriticalSection.
CS sind weitaus performanter als TMonitor
Siehe auch hier
TMonitor vs TRTLCriticalSection