2011-08-12 2 views
1

다음과 같이 빌려 수정 한 절차가 있습니다. 근본적으로 문제는 파일의 일부 양이 지나면 프로그램이 중단된다는 것입니다. 나는이 과정을 추적했다. 필연적으로 문서 자체는 문제가없는 것으로 판명되었으므로 문제를 일으키는 단어 문서를 반복해서 열고 닫는 것에 관한 것입니다. 그리고 그것은 무작위 적입니다. 때로는 100 개의 파일을 처리하며 때로는 800 개의 파일을 처리합니다. 누구나 생각을 가지고 있습니까? 디버거에서 실행할 때 어떤 오류도 생성되지 않습니다. 이 프로그램은 파일 처리를 중단하고 응답하지 않게됩니다. 내가 누락 된 쓰레기 수거가 있습니까? 메모리 누수가 있는지 어떻게 알 수 있습니까?100 개 이상의 파일을 읽은 후 워드 프로세서 응용 프로그램이 깨졌습니다.

private string readFileContent(string path) 
{ 
    string docstring = ""; 

    Word.ApplicationClass wordApp = new Word.ApplicationClass(); 
    object file = path; 
    object nullobj = System.Reflection.Missing.Value; 
    Word.Document doc = wordApp.Documents.Open(
     ref file, ref nullobj, ref nullobj, 
     ref nullobj, ref nullobj, ref nullobj, 
     ref nullobj, ref nullobj, ref nullobj, 
     ref nullobj, ref nullobj, ref nullobj); 

    try 
    { 
     SProc.Println("Created word doc instance"); 
     //doc.Clipboard.Clear(); 
     doc.ActiveWindow.Selection.WholeStory(); 
     doc.ActiveWindow.Selection.Copy(); 
     SProc.Println("Copied text to clipboard"); 
     //System.Threading.Thread.Sleep(500); 
     IDataObject data = Clipboard.GetDataObject(); 
     docstring = data.GetData(DataFormats.Text).ToString(); 
     txtFileContent.Text = docstring; 
    } 
    catch (ConfigurationErrorsException e) 
    { 
      SProc.Println("Word Error:" +e.ToString()); 
    } 
    finally 
    { 
      doc.Close(ref nullobj, ref nullobj, ref nullobj); 
      wordApp.Quit(ref nullobj, ref nullobj, ref nullobj); 
    } 
    return docstring; 
} 
+0

"그건 무작위 야."생각해 보면 : "System.Threading.Thread.Sleep (500); line ....을 주석 처리 한 것과 관련이 있는지 궁금합니다." –

+0

Rob : 사람들이 주석 처리 된 행과 설명이없는 게시물 코드 –

+0

문서의 텍스트를 복사하기 전에 클립 보드를 지운 코드를 주석 처리 한 이유는 무엇입니까? –

답변

3

또 다른 제안 :

한 번 Word.ApplicationClass를 만들고 응용 프로그램의 수명을 위해 사용, 난 당신이 정말 시작하고 800 개 파일을 위해 800 번을 닫으려면 의심한다.

관련 문제