我正在使用 Microsoft Office Interop 生成一些 Word 和 PDF 文档。在发送了一定数量的文档生成请求后,Microsoft.Office.Interop.Word.Application
停止工作/响应。
通过查看任务管理器,我知道当winword.exe
进程消耗了大约 63000K 内存时会发生这种情况[请查看快照]。我注意到每次生成文档请求时,内存消耗都会增加大约 400-800K,当达到大约 63000K 时,它就会停止工作。当收到第一个请求winword.exe
时,内存消耗大约为 20000K。
这是用于文档生成的代码:
object templateName = "d:\\xyz.dotm";
object missing = System.Reflection.Missing.Value;
wordDocument = this.WordApplication.Documents.Add(ref missing, ref missing, ref missing, ref missing);
wordDocument.Range(ref missing, ref missing).Text = "";
wordDocument.set_AttachedTemplate(ref templateName);
wordDocument = this.WordApplication.Documents.Open(
ref objSourceFilePath, ref oFalse, ref oTrue,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing);
wordDocument.ExportAsFixedFormat(
strTargetPath,
targetFormat,
paramOpenAfterExport,
paramExportOptimizeFor,
paramExportRange,
paramStartPage,
paramEndPage,
paramExportItem,
paramIncludeDocProps,
paramKeepIRM,
paramCreateBookmarks,
paramDocStructureTags,
paramBitmapMissingFonts,
paramUseISO19005_1,
ref oMissing);
finally
{
if (wordDocument != null)
{
wordDocument.Close(ref oFalse, ref oMissing, ref oMissing);
Marshal.FinalReleaseComObject(wordDocument);
wordDocument = null;
}
}
我不会丢弃WordApplication
类或释放它,因为它被保存在 ApplicationPool 中并用于进一步的请求处理。
任何人都可以提供有关为什么内存消耗不断增加然后停止响应的任何帮助/指示吗?