Похоже, на самом деле вам нужно превратить свой алгоритм в конечный автомат - вместо того, чтобы активно "останавливать" его, вы бы активно "продвигали" его.1005 * блоков итераторов полезно ... если ваш алгоритм в настоящее время в значительной степени использует один метод, вы можете изменить его, вставив оператор yield return
в конце каждого логического шага, возвращая некоторое указаниетекущее состояние.
Это не совсем обычное использование блоков итераторов, но это может быть самый простой путь вперед.Ваш пользовательский интерфейс будет вызывать GetEnumerator
один раз в начале, а затем MoveNext()
каждый раз, когда нажимается кнопка (с последующим доступом к свойству Current
, чтобы получить текущее состояние).Не забудьте избавиться от итератора, когда закончите с ним.