Wenn man den ganzen Ablauf innerhalb einer CriticalSection hat, läuft da auch nichts mehr parallel.
Die ist nur für den Zugriff auf gemeinsam genutzte Ressourcen gedacht (z.B. Variablen im Speicher).
Ich hab mal versucht das ganze Threadsicher umzusetzen:
MultiThread.zip