小编adr*_*fek的帖子

如何调试慢速Office应用程序互操作构造函数?

我有一个处理excel的应用程序.最近我遇到了Excel对象创建速度非常慢的问题.

我用这个简单的代码重新创建了这个问题:

Microsoft.Office.Interop.Excel.Application xlApp;
xlApp = new Microsoft.Office.Interop.Excel.Application(); 
Run Code Online (Sandbox Code Playgroud)

第二行导致延迟.

为了测量新对象分配所需的时间,上面的代码已经扩展了时间跟踪解决方案,结果是确凿的.在NORMAL情况下,上面的代码在0.5秒内执行,而在FAULTY-BEHAVIOR的情况下,它可能需要长达5分钟.

没有内存泄漏,并且正确释放了excel对象.我的解决方案全年24/7运行,没有任何问题.我不确定它是否重要但是应用程序在20个单独的用户会话(服务器机器)上运行.因此,此应用程序有20个副本同时运行,可能会导致同时运行20个Excel副本.

这个问题第一次在2个月前被注意到,并且已通过升级办公室(2010年 - > 2013年)得到解决.这次我有更多时间进行调查,遗憾的是结果并不乐观.

事实:

  • 目前只有一台机器受此问题影响(24个CPU内核,24GB Ram)
  • 当"延迟"发生时,CPU根本没有压力
  • 我尝试使用"进程监视器"应用程序来验证当我们"新的Excel.Application()"构造函数(看看是否有任何过多的磁盘/内存/ CPU使用)时会发生什么 - 没有资源限制的迹象.没有与COM对象等相关的日志文件的迹象.
  • 这里唯一的问题是这几分钟的延迟.所有其他Excel Interop命令都照常工作.

主要问题:

  • 有没有办法调试这个Microsoft.Office.Interop.Excel.Application()构造函数,看看哪个部分是一个问题?

外部内容

编辑 - 附加测试

PowerPoint构造函数不受延迟的影响

ppApp = new Microsoft.Office.Interop.PowerPoint.Application();
Run Code Online (Sandbox Code Playgroud)

c# office-interop excel-interop

10
推荐指数
1
解决办法
2253
查看次数

标签 统计

c# ×1

excel-interop ×1

office-interop ×1