private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; int n = Int32.Parse(inputLabel.Text); int tmp; if ((n - 1) % 2 == 0) { tmp = n - 2; } else { tmp = n - 1; } for (int i = tmp; i >= 2; i -= 2) { if (worker.CancellationPending == true) { e.Cancel = true; break; } if (Prim.IsPrim1(i)) { worker.ReportProgress(i); break; } Thread.Sleep(200); worker.ReportProgress(i); } }