private void BackgroundWorkerOnDoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = (BackgroundWorker)sender; IRunner runner = (IRunner)e.Argument; runner.ReadyRunner(); while (!worker.CancellationPending) { runner.Run(); Debug.WriteLine("Finish run"); if (!worker.CancellationPending) { Debug.WriteLine("Start logging ..."); worker.ReportProgress(0, Logger); } } }