Я использовал фоновый воркер на уровне управления пользователем, и он работал нормально, но затем я подтолкнул воркера к одной из вспомогательных функций. Мой вопрос в том, что он работает нормально, пока я не попытаюсь отменить задачу. В функции DoWork есть цикл, вызывающий веб-службу каждый раз, и перед вызовом службы он проверяет ожидание отмены, и если да, он должен разорвать цикл.
.Net Background Worker не отменяет
Ответы (1)
1) Убедитесь, что вы установили свойство WorkerSupportsCancellation
на BackgroundWorker
на True
.
2) Убедитесь, что вы правильно удаляете все ссылки на веб-службы. (Просто потому, что вы все равно должны это делать)
Вы также можете пройти через BackgroundWorker и убедиться, что при отмене для свойства ожидания отмены установлено значение true.
Если ничего из этого не помогает, вы можете рассмотреть возможность демонстрации кода для создания и запуска вашего фонового рабочего, а также любого кода для событий (DoWork, RunWorkerCompleted и т. Д.).
ИЗМЕНИТЬ (это было удалено, когда Уилл выполнил редактирование)
Вы также можете проверить эту ссылку .
Важная вещь, которую нужно получить из этой ссылки, заключается в том, что даже при отмене, если рабочий уже выполняет работу (IE: обработка через DoWork), он может пропустить отмену и продолжить свою работу.
BackgroundWorker
экземпляр отменил свой запрос. - person Will Marcouiller   schedule 21.10.2010