Код:
if Assigned(StringList) then
FreeAndNil(StringList);
Внутри FreeAndNil проверка на Nil уже есть, та кчто можно писать просто
Далее
Я уже спрашивал - что с чем синхронизируется спомощью CriticalSection ?
Если она используется только в одном потоке, то она не нужна.