UserControl.cs: public UserControl1() { InitializeComponent(); backgroundWorker1.WorkerReportsProgress = true; backgroundWorker1.WorkerSupportsCancellation = true; } private void UserControl1_Load(object sender, EventArgs e) { if (backgroundWorker1.IsBusy != true) { // Start the asynchronous operation. backgroundWorker1.RunWorkerAsync(); } } public static string Data; private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { label1.Text = e.ProgressPercentage.ToString() ; } Form1 f1 = new Form1(); private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; for (int i = 1; i <= 10; i++) { if (label1.Text==Data) { worker.CancelAsync(); } else { // Perform a time consuming operation and report progress. System.Threading.Thread.Sleep(500); worker.ReportProgress(i * 10); } } } Form.cs private void button1_Click(object sender, EventArgs e) { UserControl1 uc1 = new UserControl1(); UserControl1.Data = "80"; this.Controls.Add(uc1); }