in reply to How to break up a long running process
It depends on how the long running function runs and why it takes so long to run. If it's CPU-bound and something you can break up into smaller pieces, POE would be a good option, and you could use delay events to periodically report status. If it's IO-bound or for some other reason you can't otherwise subdivide it, then you might have to run another thread to send status updates.