Du hast deine CriticalSection als Private Variable - da bringt sie nichts, weil ja jeder Thread eine eigene erzeugt.
Critical Sections müssen immer global erreichbar sein, und darf es somit auch nur einmal geben.
Du hast zwar eine globale - diese wird aber bei jedem Thread Create überschrieben, und außerdem nie verwendet.
Sonstiges:
a) Schau dir mal an, was ein Constructor ist
b) Du gibst deine Stringliste nicht frei. Schau dir noch try ... finally an
c) im execute: ein try..finally Block, wobei finally leer ist macht wenig Sinn.
Edit:
d) Gewöhn dir den Vergleich auf = true direkt wieder ab
e) Du greifst von mehreren Threads aus auf die Variable i zu. Selbst das kann, ohne Synchronisierung, schon zu komischen Effekten führen.
_________________
PROGRAMMER: A device for converting coffee into software.