You might want to have a look at this codebank thread:

Correct way to use the BackgroundWorker