Учитывая BackgroundWorker
bgWrk:
Вы можете установить bgWrk.Cancel = true;
при возникновении ошибки. Это имеет следующие эффекты:
После этого флаг CancellationPending
переключается в значение true, которое можно периодически проверять для фонового работника, а затем соответствующим образом отменять. Насколько я знаю, это будет считаться «лучшей практикой» в этом.
Затем вы можете убедиться, что ваш код больше не запускается, если установлен флаг CancellationPending
и в основном ожидает отмены от вызывающей стороны. Он должен работать изящно для вас.