Если вы нагрузите основоной процесс какими-то серъезными вычислениями, то само сабой ваша прога будет слабо реагировать на действия пользователя и системы.
Я делал так. Создавал 2-й поток, который занимался обработкой данных, в качестве параметра передавал ему н-р указатель на класс диалого (который занимался отображением), у диалога был метод SetNewInfo,
этот метод добавлял новые данные к старым и посылал окну зарегистрированное сообщение с помощью PostMessage (только если предыдущее уже обработалось). Разумеется внутри метода использовались критические секции.