Метод Dispose используется для очистки итерации приведением объекта перечислителя в состояние after.
· Если состояние объекта перечислителя before, вызов Dispose меняет это состояние на after.
· Если состояние объекта перечислителя running, результат вызова Dispose не определен.
· Если состояние объекта перечислителя suspended, при вызове Dispose:
o состояние меняется на running;
o выполняются все блоки finally, как если бы последний выполненный оператор yield return был оператором yield break. Если это приводит к инициированию и распространению из тела итератора исключения, состояние объекта перечислителя устанавливается в after, а исключение распространяется до объекта, вызвавшего метод Dispose;
o состояние меняется на after.
· Если состояние объекта перечислителя after, вызов Dispose не оказывает влияние.