Отмена BackgroundWorker в потоке
У меня более длительный многошаговый процесс с использованием BackgroundWorker и C#. Я должен быть уверен, что каждый шаг успешно завершен, прежде чем перейти к следующему шагу. Я видел много ссылок на то, чтобы позволить BackgroundWorker отлавливать ошибки и отменять нажатие кнопки "Отмена", но я хочу самостоятельно проверить наличие ошибок и затем корректно завершить процесс. Я отношусь к этому так же, как кто-то нажал кнопку отмены, или есть другой способ?
1 ответ
Учитывая BackgroundWorker
bgWrk:
Вы можете установить bgWrk.Cancel = true;
когда происходит ошибка. Это имеет следующие последствия:
Это затем переключает CancellationPending
установите значение true, для которого вы можете периодически проверять фонового работника, а затем соответственно отменять. Насколько я знаю, это будет считаться "лучшей практикой".
Затем вы можете убедиться, что ваш код больше не работает, если CancellationPending
флаг установлен, и в основном ждет отмены от вызывающей стороны. Это должно работать изящно для вас.