Создавай все компоненты в Execute перед выполнением работы а не в процедурах.
И уничтожай потом в Destroy или где там у тебя завершение.
И делай синхронизацию потоков с формой. Ты можешь в литровую банку сразу 5 рук засунуть?
З.Ы. И что у тебя за бред с созданием TStringList?
Он у тебя создаётся по сто раз и ни разу не уничтожается!