C#Word自动化使Windows资源管理器崩溃
本文关键字:资源管理器 崩溃 Windows 自动化 C#Word | 更新日期: 2023-09-27 18:19:28
我编写了一个C#程序,该程序从.xlsx文件导入产品列表,并允许用户根据该产品列表创建订单。用户完成后,程序会根据订单构建一个或多个系统规范。这些规范会写入.docx文件。我在计算机上安装了Office 2007,并且正在使用Microsoft.Office.Interop.Excel和Microsoft.Office.Iinterop.Word命名空间。
问题是:运行程序后,Windows资源管理器经常崩溃,必须重新启动。当在文件夹中导航或右键单击文件夹时,就会发生这种情况。这种情况也发生在程序关闭后,使其停止的唯一解决方案是重新启动计算机。似乎只有当我创建了输出文件(.docx)时才会发生这种情况。如果我像往常一样启动程序并使用它,但没有创建word文件,问题似乎就不会发生。程序创建输出文件后,Word将对用户"可见"以进行手动编辑。用户在完成文档编辑后关闭word应用程序。
运行单词自动化时,什么会导致Windows资源管理器崩溃?这件事我真的需要帮助。欢迎提出任何建议。
执行后,是否还有ghost excel.exe和word.exe进程?
这些幽灵可能会使系统不稳定。
您可能没有正确释放通过自动化实例化的COM对象。
在实例化的每个COM对象上使用Marshal.ReleaseComObject(yourobj);
。我知道这真的很痛苦。
注意:确保您不会在不知情的情况下实例化COM对象:
mySheet = myExcelObject.workbooks[0].Sheet[0]
不仅会实例化一个工作表对象,还会实例化一个工作簿对象。
经验法则:永远不要在COM对象(foo.bar.baz)上使用辅助属性并释放所有内容。
最后一点注意:不要在服务器上使用办公自动化,这很糟糕,用微软自己的话说,有完全管理的库。