Adding cancellation and progress with BackgroundWorker