Чего-то я туплю...
Каким образом можно организовать следующее: главная програма создает потоков (работающих с COM-портами), а сама становится демоном. В потоках соответственно бесконечные циклы и они никогда не завершатся.
Киньте схему кода или названия функций хотя-бы.