Можно помечтать о "перезагрузке данных в др нитке"
Я думаю, что это не "помечтать", а в итоге самый толковый способ.
Только в GUI thread, думаю, надо хранить статус "загружено - загружается - не загружено". Чудес-то не бывает. Если юзер захочет быстро попереключаться туда-сюда, надо во время загрузки показывать что-то типа "данные загружаются", а если эти данные могут измениться прямо во время работы - возможно, и добавить в инфо-окно кнопку "Обновить", которая снова дёрнет на запуск нитку загрузки. Просто при переключении между окон нитку не дёргать, пусть программа показывает ранее загруженные данные. Иначе вся эта многопоточность быстро доведёт программу до цунгундера. Для особо
бестолковых любознательных можно при последующих переключениях подсвечивать рядом с кнопкой "Обновить" надпись что-нибудь типа "Данные могут быть неактуальными", если речь действительно идёт не про файлы, а про данные реального времени...