Ein Thread ständig anzuhalten ist eben nicht im Sinne des Erfinders. Aber je nachdem, wie du es im Programm benötigst, kannst du es ja einsetzen.
Aber versuchs mal mit TCriticalSection. Du erstellst ein Objekt davon im Main-Thread und übergibst es auch an den Thread (am besten über den Constructor) und immer bevor du in die kritische Region kommst (wo du auf eben diese Variablen zugreifst) rufst du
IMHO CriticalSection.Enter auf und danach wieder leave. Wichtig ist, dass es dasselbe Objekt ist.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.