Should I just let the form go ahead and Dispose even though the Do Work might take a little longer to finish, or is there some way (and is it better) to thread.
Join the background worker until it really does exit and then let the Dispose of the form continue?
By default, each time your application executes a piece of code, this code is run on the same thread as the application itself.
This means that while this code is running, nothing else happens inside of your application, including the updating of your UI.
Forms control from any thread except the thread that handles the message queue.
The Progress Bar control is typically used when an application performs tasks such as copying files or printing documents.
To a user the application might look unresponsive if there is no visual cue.
This is quite a surprise to people who are new to Windows programming, when they first do something that takes more than a second and realize that their application actually hangs while doing so.
The result is a lot of frustrated forum posts from people who are trying to run a lengthy process while updating a progress bar, only to realize that the progress bar is not updated until the process is done running.