I used to use BackgroundWorkers, and they are really designed to complete the task delegated to them in the background, create events related to the task, and die on completion. The most common example would be updating the progress bar from the background thread. User interface elements can only be updated from the user interface thread, so BackgroundWorkers that raise events in the user interface thread are desirable for this reason.
Having BackgroundWorker do things that require persistence, such as database connection operations, it looks like this will cause problems solely because of their temporary nature.
source share