var b= new BackgroundWorker(); b.WorkerReportsProgress = true; b.ProgressChanged += (o, args) => { Status.Text = args.UserState.ToString(); }; b.DoWork += (o, args) => { var bw = o as BackgroundWorker; bw.ReportProgress(0, "Started"); System.Threading.Thread.Sleep(1000); bw.ReportProgress(0, "Stage 1"); System.Threading.Thread.Sleep(1000); bw.ReportProgress(0, "Stage 2"); System.Threading.Thread.Sleep(1000); bw.ReportProgress(0, "Finished"); }; b.RunWorkerAsync();