在100多个文件后阅读word doc app崩溃

时间:2011-08-12 11:10:15

标签: c# ms-word

我有一个我借用和修改的程序如下所示。基本上问题是在经过一些文件后,程序会崩溃。我追溯到这个程序。文件本身不可避免地被证明是好的,所以它是关于重复打开和关闭word文档的问题,这会导致问题。它是随机的,有时会处理100个文件,有时800个。任何人都有任何想法?当我在调试器中运行它时,我没有看到任何错误产生。该程序只是停止处理文件而变得没有响应。我缺少一些垃圾收集吗?如何判断是否存在内存泄漏?

 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;
 }

1 个答案:

答案 0 :(得分:3)

另一个建议:

创建一次Word.ApplicationClass并在应用程序的生命周期中使用它,我怀疑你真的想要启动它并关闭800次800文件。