Как остановить выполнение BackgroundWorker - C#
Формулировка задачи:
здравствуйте.
Не пойму как можно остановить поток. Есть две кнопки старт и стоп.
В самом потоке выполняется
private void start_Click(object sender, EventArgs e) { bwExport.RunWorkerAsync(); } private void stop_Click(object sender, EventArgs e) { if (bwExport.WorkerSupportsCancellation == true)//подглядел в инете, думал это поможет { bwExport.CancelAsync(); } }
void bwExport_DoWork(object sender, DoWorkEventArgs e) { while(true) { DrawGraph();//рисуется график раз в 15 минут. System.Threading.Thread.Sleep(900000); } }
Решение задачи: «Как остановить выполнение BackgroundWorker»
textual
Листинг программы
static void Main() { var bw = new BackgroundWorker(){WorkerSupportsCancellation = true}; bw.DoWork += (sender, e) => { var worker = (BackgroundWorker) sender; var random = new Random(); while (!worker.CancellationPending) { Console.WriteLine(random.Next()); Thread.Sleep(500); } Console.WriteLine("Finish"); }; for (;;) { Console.WriteLine("Нажмите любую клавишу чтобы начать"); Console.ReadKey(); bw.RunWorkerAsync(); Console.WriteLine("Нажмите любую клавишу чтобы закончить"); Console.ReadKey(); bw.CancelAsync(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д