Как остановить выполнение 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();
}
}