我有一个处理Excel的应用程序。最近遇到了创建Excel对象非常缓慢的问题。
我使用以下简单代码重新创建了这个问题:
Microsoft.Office.Interop.Excel.Application xlApp;
xlApp = new Microsoft.Office.Interop.Excel.Application();
第二行代码导致延迟。
为了衡量新对象分配所需的时间,上述代码已经扩展了时间跟踪解决方案,并得出了结论。在正常情况下,上述代码执行需要0.5秒,而在错误行为的情况下,可能需要长达5分钟。
没有内存泄漏并且Excel对象被正确释放。我的解决方案已经全年24/7地运行,没有任何问题。我不确定是否重要,但应用程序正在20个独立用户会话(服务器机器)上运行。因此,同时会有20个此应用程序的副本运行,可能会导致同时运行20个Excel。
这个问题是2个月前第一次被注意到,并通过升级Office(2010→2013)解决了。这次我有更多时间进行调查,但结果令人失望。
事实:
- 只有一台机器目前受到这个问题的影响(24个CPU核心,24GB的RAM)
- “延迟”发生时,CPU根本没有压力
- 我尝试使用“进程监视器”应用程序来验证我们“new Excel.Application()”构造函数时发生了什么(以查看是否存在过度的磁盘/内存/CPU使用)-没有资源限制的迹象。没有与COM对象相关的日志文件等
- 这里唯一的问题就是这几分钟的延迟。所有其他Excel Interop命令都像往常一样工作。
主要问题:
- 是否有办法调试此Microsoft.Office.Interop.Excel.Application()构造函数以查看此处存在的问题?
外部内容
编辑-附加测试
PowerPoint的构造函数不受影响。
ppApp = new Microsoft.Office.Interop.PowerPoint.Application();