Since you say you cant use ithreads, you have to break the CPU heavy (I hope the reason your blocking is CPU, and not IO, since IO can be made async with a medium amount of work) workload into chunks, or during the work, every 100 ms poll to the GUI event loop for the event loop to service pending GUI events.