C#Word自动化使Windows资源管理器崩溃

时间:2012-01-04 08:07:45

标签: c# crash ms-word ms-office windows-explorer

我编写了一个C#程序,它从.xlsx文件导入产品列表,让用户根据该产品列表创建订单。 当用户完成时,程序根据订单构建一个或多个系统规范。这些规范被写入.docx文件。我在计算机上安装了Office 2007,并使用Microsoft.Office.Interop.Excel和Microsoft.Office.Interop.Word命名空间。

问题: 运行程序后,Windows资源管理器经常崩溃,必须重新启动。在文件夹中导航或右键单击文件夹等时会发生这种情况。 程序关闭后也会发生这种情况,使其停止的唯一解决方案是重新启动计算机。似乎只有在我创建输出文件(.docx)时才会发生这种情况。如果我启动程序并像往常一样使用它,但没有创建单词文件,似乎不会出现问题。 程序创建输出文件后,Word将“可见”给用户进行手动编辑。完成编辑文档后,用户将关闭单词应用程序。

运行文字自动化时,Windows资源管理器崩溃的原因是什么? 我真的需要帮助。欢迎任何建议。

1 个答案:

答案 0 :(得分:2)

执行后,您是否还有ghost excel.exe和word.exe进程?

这些鬼可能会使系统不稳定。

您可能无法正确释放通过自动化实例化的COM对象。

对您实例化的每个COM对象使用Marshal.ReleaseComObject(yourobj);。我知道这真的很痛苦。

注意:请确保在不知道的情况下不实例化COM对象:

mySheet = myExcelObject.workbooks[0].Sheet[0]不仅会实例化工作表对象,还会实例化工作簿对象。

经验法则:永远不要在COM对象(foo.bar.baz)上使用辅助属性并释放所有内容。

最后注意事项:不要在服务器上使用office automation at all,这很糟糕,根据微软自己的说法,有完全托管的libraries