Ну, на самом деле есть только три основных программных потока: последовательность (шаг 1, шаг 2 и т. Д.), Выбор (операторы типа if) и итерация (циклы).
Если вы этого не сделаетеесть какие-либо петли, все, что вам осталось, это выбор и последовательность.Это означает, что ваш код, вероятно, в конечном итоге будет выглядеть примерно так (очевидно, псевдокод):
perform sql (statement1)
if IsCancellationRequested: return
perform sql (statement2)
if IsCancellationRequested: return
:
:
perform sql (statementN)
if IsCancellationRequested: return
Другими словами, без циклов, нет единственного удобного места, чтобы поставить проверку там, где она будетзвонил много раз, и тебе придется звонить много раз самому.Нет реальной разницы между этим и вызовом в цикле, с точки зрения количества его вызовов.
Если ваша проблема в том, что вам не нравится идея, что столько проверок повторяется повсюдуваш исходный код, вы можете создать функцию, которая сделает это для вас, что-то вроде:
def execSql (sqlStatement):
perform sql (sqlStatement)
return IsCancellationRequested
тогда ваши строки станут:
if (perform sql (statement1)): return
if (perform sql (statement2)): return
:
if (perform sql (statementN)): return
Теперь вы, вероятно, добавить зацикливается, помещая операторы в какую-то коллекцию, и таким образом, вам нужно будет только кодировать одну проверку / возврат.Но это означает более существенные изменения в том, как вы делаете вещи сейчас.