various changes to make the background worker threads safer, and close properly. The main ui thread has to continue, it cannot pause and process while waiting for background workers to finish, because the background workers rely on the message pump of the main ui thread to determine if they are busy or not. Might consider changing the background workers to actual threads.
separated stopping of all workers into individual button for now