Keeping a GUI responsive while running a lengthy process requires either some very elaborate "callbacks" to allow the GUI to process its message queue, or the use of (background) (worker) threads.
Kicking off any number of threads to do some work usually isn't a problem. The fun starts wh...