我正在使用 VSTO Powerpoint API 来自动创建 Powerpoint 文件。我发现在 Windows 7 系统上使用最基本的调用从 Web 应用程序创建 Powerpoint 文件会导致内存不足错误(其他操作打开文件的 VSTO 调用也会失败):
PowerPoint.Presentation presentation = _ppPresentations.Add(Office.MsoTriState.msoTrue);
string outputDirectory= getOutputDirectory();
presentation.SaveAs(outputDirectory+ "\\CreateSlideTestOutput.pptx",
PowerPoint.PpSaveAsFileType.ppSaveAsDefault, Office.MsoTriState.msoTrue);
在进行任何 VSTO API 调用以操作文件(例如,保存幻灯片或将幻灯片添加到 powerpoint)时,我收到的错误是“内存不足”。
但是,我发现如果我在单元测试中运行相同的代码,或者作为用户可执行文件 (.exe),添加内容、操作和保存 Powerpoint 文件都没有问题。
但是,当我尝试创建一个 Windows 服务来自动化我的用户可执行文件中使用的相同代码时,我再次收到内存不足错误。我可以在我的服务中设置一个断点,并查看它在从我的 Web 应用程序调用时失败的完全相同的 VSTO API 调用上失败。
有没有人解释为什么用户可执行线程可以执行 VSTO API 调用而没有任何问题(并且在内存中没有可观察到的跳转),而我的应用程序池线程或 Windows 服务线程总是遇到内存不足错误?