Calling Component::repaint() in a process thread

Had all sorts of problems when explicitly calling component::repaint() elsewhere, most of the case with no visible effect (fact is, I think we just queue one more repaint request event). I am notably using an ActionListener as App controller (MVC design) and noted that no component updates would get repainted before the actionListenerCallback completes. However, I discovered:
MessageManager::getInstance()->runDispatchLoopUntil(200);
…that works like magic.
I have not observed any detrimental effect so far, but it is still unclear for me what this 0,2 sec run given to the message manager from my ActionListener controller thread could impact? indeed, Jules-in-person recommends never doing that, cf.: runDispatchLoopUntil(1) sometimes takes many seconds to complete
What would be the alternative?