Сергей я посмотрел главный твой главный модуль. если на данном этапе тяжело это выделить в отдельный некий "контроллер", то есть вариант проще:
объекты
TGetSystemMagnetic
,
TSM
и тд вообще не обязательно разрушать и создавать на каждый расчет.
их можно создать единожды при старте программы и разрушить при завершении программы.
единственное что надо сделать - это защитить их любым способом от совместного изменения в один момент времени из главного и вторичного потоков.
результат вычислений ты можешь забирать по событие
TThread.OnTerminate
, который отрабатывает в главном потоке, так что там ты спокойно можешь выводить данные в ГУИ