VS 2017, C# 으로 Office.Interop.Word 를 이용하여 프로그램을 작성하고 있습니다.
그런데 Page 수는 3이라고 나오는데
foreach 문으로 Page를 돌면 두번 밖에 돌지 않는 문제가 있습니다.
foreach (Word.Window window in doc.Windows)
{
foreach (Word.Pane pane in window.Panes)
{
logger.LogInformation($"pane.Pages: {pane.Pages.Count}"); // 3으로 나옴
int pageNumber = 1;
foreach (Word.Page page in pane.Pages)
{
logger.LogInformation($"PageNumber: {pageNumber++}"); // 2까지만 찍힘
}
}
}
이에 Enumerator는 정상 동작 하나 싶어서 위에 Enumerator를 사용해 보았는데 역씨나 2번 밖에 돌지 않았습니다.
그런데 희얀하게 그 아래에 있는 원래 있던 foreach는 정상적으로 3번을 돌았습니다.
이 문제는 제가 어떻게 해석해야 하는지 잘 모르겠습니다.
버그 인가요?
foreach (Word.Window window in doc.Windows)
{
foreach (Word.Pane pane in window.Panes)
{
logger.LogInformation($"pane.Pages: {pane.Pages.Count}"); // 3으로 나옴
IEnumerator iter = pane.Pages.GetEnumerator();
iter.Reset();
while (iter.MoveNext())
{
Word.Page page = (Word.Page)iter.Current;
logger.LogInformation("iter.........................................."); // 두번 찍힘
}
int pageNumber = 1;
foreach (Word.Page page in pane.Pages)
{
logger.LogInformation($"PageNumber: {pageNumber++}"); // 3까지 찍힘
}
}
}
방금 다른 곳에서 Enumerator 돌면서 로그 찍는 코드를 연달아 두번 작성하고 테스트를 해 봤는데 그기에서는 첫번째 Enumerator는 타지도 않고 두번째 Enumerator 가 3번 돌아야 하는데 2번만 돌고 3번째 있는 foreach는 3번 다 도는군요.