In the last question Display progress bar while doing some work in C#?, people has recommend use of BackgroundWorker. I thought in BackgroundWorker
BackgroundWorker
The RunWorkerCompleted callback is marshalled onto the UI thread; DoWork is not.
RunWorkerCompleted
DoWork
You should use the ReportProgress method to update the UI during DoWork processing.
ReportProgress
See: How to: Run an Operation in the Background