private void btnStart_Click(object sender, EventArgs e) { if (bckgWorker.IsBusy == false) { int from; if (!int.TryParse(textBox1.Text, out from)) { MessageBox.Show("Error first num is doesn't correct"); return; } int to; if (!int.TryParse(textBox2.Text, out to)) { MessageBox.Show("Error first num is doesn't correct"); return; } Examlple ex = new Examlple { From = from, To = to }; //bckgWorker.RunWorkerAsync();//запускает событие doWork bckgWorker.RunWorkerAsync(ex);//запускает событие doWork btnStart.Enabled = false; } }
private void bckgWorker_DoWork(object sender, DoWorkEventArgs e) { Examlple examlple = e.Argument as Examlple; e.Result = this.Summ(examlple.From, examlple.To); for (int i = 1; i <= 100; i++) { if (bckgWorker.CancellationPending) { e.Cancel = true; break; } //if (i == 50)//принудительно остановили его на 50, и дальше на 100% не дойдет((( //{ // throw new Exception("Test!"); //} Thread.Sleep(200); bckgWorker.ReportProgress(i); } }