This allows the BackgroundWorker to be cancelled in between tasks
bgWorker.WorkerSupportsCancellation = true;
This allows the worker to report progress between completion of tasks...
bgWorker.WorkerReportsProgress = true;
//this must also be used in conjunction with the ProgressChanged event