我有一个我借用和修改的程序如下所示。基本上问题是在经过一些文件后,程序会崩溃。我追溯到这个程序。文件本身不可避免地被证明是好的,所以它是关于重复打开和关闭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;
}
答案 0 :(得分:3)
另一个建议:
创建一次Word.ApplicationClass并在应用程序的生命周期中使用它,我怀疑你真的想要启动它并关闭800次800文件。