Вы должны отменить зависимые операции вручную.Operation
имеет массив dependencies
, содержащий все операции в зависимости от операции.В месте operation1
, в котором вы обнаруживаете ошибку, циклически перебирайте массив dependencies
и вызывайте cancel()
для каждой из операций в массиве.
Вызов cancel()
не всегда достаточен для фактической отменыОперация.Общая настройка состоит в том, что начало функции start()
проверяет логическое значение isCancelled
и, если оно true
, возвращается без выполнения задачи.Таким образом, операция «выполняется», но не выполняет фактическую работу.Если вы переопределили start()
, вам придется сделать это самостоятельно.
Все это необходимо сделать до того, как для isFinished
будет установлено значение true
.