I doubt threading has anything to do with it. Windows's display model makes it so that only the thread that created a window can draw to it or interact with its I/O.
What's needed here is a proper implementation of modal dialogs.
It's actually spelled modal, and if I remember right all the dialogs are modal, the problem I'm guessing is that new dialogs are queuing up in the wrong order due to multiple worker threads completing at random times.
But I don't program for a living thank god so I could be way off.