Как остановить выполнение 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();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д