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