实例化新的Excel进程时出错

时间:2012-06-25 14:04:17

标签: c# .net excel automation com+

此问题与我之前在Maximum number of excel processes?的问题有关,但行为不同。

简而言之:有一个COM +组件在启动时会打开许多​​excel进程。句柄被添加到列表中,因此它们不会超出范围或垃圾回收。

如果我在本地运行此组件(Windows 7 64位,12 Gb内存),它会正常运行并打开30个excel进程而不会出现问题。

如果我在(虚拟)服务器(Windows Server 2003 R2 SP2 64位,4 Gb)上运行此组件,则前21个excel进程正确启动,但其余9个进程未创建;在事件日志中,我看到以下错误的9次:

 Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005.

因此创建最后9个excel进程导致异常,它似乎达到了21个excel进程的限制。

如果我在另一台服务器(Windows Server 2003 SP 2,1 Gb RAM)上试用它,它会创建22个excel进程,而8个进程会出现相同的异常。

我想知道是什么导致excel进程创建在这些服务器上失败?

编辑:如果我使用开始菜单手动打开它们,我可以毫无问题地打开30个excel实例。

有什么想法吗?

谢谢, L

1 个答案:

答案 0 :(得分:0)

从技术上讲,你所做的事情根本不受支持: http://support.microsoft.com/kb/257757

  

Microsoft目前不推荐,也不支持,   任何无人值守的Microsoft Office应用程序的自动化,   非交互式客户端应用程序或组件(包括ASP,   ASP.NET,DCOM和NT服务),因为Office可能会出现不稳定   Office在此环境中运行时的行为和/或死锁。

也就是说,由于服务器之间存在轻微的不一致,我相信你遇到了某种资源冲突/限制,而不是特定于excel的东西。由于服务器上的内存有限,它可能只是耗尽或碎片化内存。