Измените его на бесконечный цикл.
BackgroundWorker
имеет встроенную поддержку отмены.Для отмены фонового рабочего звоните BackgroundWorker.CancelAsync
.Также вам нужно изменить рабочий код для проверки отмены, как указано в документации:
CancelAsync отправляет запрос на завершение отложенной фоновой операции и устанавливает для свойства CancellationPending значение true.
Когда вы вызываете CancelAsync, ваш рабочий метод имеет возможность остановить его выполнение и выйти.Рабочий код должен периодически проверять свойство CancellationPending, чтобы видеть, было ли оно установлено в true.
Так, например, если у вас есть этот бесконечный цикл в вашем рабочем потоке:
while (true)
{
...
}
затем вы можете изменить его на:
while (!backgroundWorker.CancellationPending)
{
...
}
Чтобы отмена работала, вам также нужно установить для свойства BackgroundWorker.WorkerSupportsCancellation
значение true
.Это можно сделать в конструкторе.