Отмена BackgroundWorker в потоке

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

1 ответ

Решение

Учитывая BackgroundWorker bgWrk:

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

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

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

Другие вопросы по тегам