Отмена BackgroundWorker в потоке - PullRequest
2 голосов
/ 16 марта 2010

У меня более продолжительный многошаговый процесс с использованием BackgroundWorker и C #. Я должен быть уверен, что каждый шаг успешно завершен, прежде чем перейти к следующему шагу. Я видел много ссылок на то, чтобы позволить BackgroundWorker отлавливать ошибки и отменять нажатие кнопки «Отмена», но я хочу сам проверить на наличие ошибок и затем изящно завершить процесс. Я отношусь к этому так же, как кто-то нажал кнопку отмены, или есть другой способ?

1 Ответ

5 голосов
/ 16 марта 2010

Учитывая BackgroundWorker bgWrk:

Вы можете установить bgWrk.Cancel = true; при возникновении ошибки. Это имеет следующие эффекты:

После этого флаг CancellationPending переключается в значение true, которое можно периодически проверять для фонового работника, а затем соответствующим образом отменять. Насколько я знаю, это будет считаться «лучшей практикой» в этом.

Затем вы можете убедиться, что ваш код больше не запускается, если установлен флаг CancellationPending и в основном ожидает отмены от вызывающей стороны. Он должен работать изящно для вас.

...