none
Office.Interop.Word Page 순회 시 이상현상

    질문

  • 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번 다 도는군요.



    • 편집됨 단테1120 2018년 10월 8일 월요일 오전 7:03
    2018년 10월 8일 월요일 오전 6:45