.Net Background Worker не отменяет

Я использовал фоновый воркер на уровне управления пользователем, и он работал нормально, но затем я подтолкнул воркера к одной из вспомогательных функций. Мой вопрос в том, что он работает нормально, пока я не попытаюсь отменить задачу. В функции DoWork есть цикл, вызывающий веб-службу каждый раз, и перед вызовом службы он проверяет ожидание отмены, и если да, он должен разорвать цикл.


person Abain    schedule 21.10.2010    source источник
comment
Как вы называете свою веб-службу?   -  person Daniel Mošmondor    schedule 21.10.2010
comment
Какой язык? (Решение имеет разные синтаксисы на разных языках .NET. Например, в VB.NET, объявляете ли вы свой BackgroundWorker с помощью WithEvents, а затем объявляете точку входа фонового рабочего в Handles (me) .RunWorkerCompleted? ... чтобы он действительно получить его событие остановки.)   -  person Eric Towers    schedule 21.10.2010
comment
Возможно, это ваш WebService, который зависает, избегая того, чтобы ваш BackgroundWorker экземпляр отменил свой запрос.   -  person Will Marcouiller    schedule 21.10.2010


Ответы (1)


1) Убедитесь, что вы установили свойство WorkerSupportsCancellation на BackgroundWorker на True.

2) Убедитесь, что вы правильно удаляете все ссылки на веб-службы. (Просто потому, что вы все равно должны это делать)

Вы также можете пройти через BackgroundWorker и убедиться, что при отмене для свойства ожидания отмены установлено значение true.

Если ничего из этого не помогает, вы можете рассмотреть возможность демонстрации кода для создания и запуска вашего фонового рабочего, а также любого кода для событий (DoWork, RunWorkerCompleted и т. Д.).

ИЗМЕНИТЬ (это было удалено, когда Уилл выполнил редактирование)

Вы также можете проверить эту ссылку .

Важная вещь, которую нужно получить из этой ссылки, заключается в том, что даже при отмене, если рабочий уже выполняет работу (IE: обработка через DoWork), он может пропустить отмену и продолжить свою работу.

person Tony Abrams    schedule 21.10.2010
comment
Я делаю шаг 1, а на шаге 2 я использую ключевое слово. Но я обнаружил, что для свойства отложенной отмены не установлено значение true, даже если оно переходит в функцию CancelAsync. - person Abain; 22.10.2010
comment
Хм. Я вижу, что когда Уилл отредактировал мой ответ, моя правка исчезла. Добавление моей правки обратно сейчас. - person Tony Abrams; 22.10.2010