Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Word自动化使Windows资源管理器崩溃_C#_Crash_Ms Word_Ms Office_Windows Explorer - Fatal编程技术网

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

C# Word自动化使Windows资源管理器崩溃,c#,crash,ms-word,ms-office,windows-explorer,C#,Crash,Ms Word,Ms Office,Windows Explorer,我编写了一个C#程序,它从.xlsx文件导入一个产品列表,并允许用户基于该产品列表创建订单。 用户完成后,程序将根据订单构建一个或多个系统规范。这些规范将写入.docx文件。我已在计算机上安装了Office 2007,并且正在使用Microsoft.Office.Interop.Excel和Microsoft.Office.Interop.Word命名空间 问题是: 运行程序后,Windows资源管理器经常崩溃,必须重新启动。在文件夹中导航或右键单击文件夹等时会发生这种情况。 程序关闭后也会发生

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

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

运行word自动化时,什么会使Windows资源管理器崩溃?
在这件事上我真的需要帮助。欢迎提出任何建议。

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

这些幽灵很可能使系统不稳定

您可能没有正确释放通过自动化实例化的COM对象

使用
Marshal.ReleaseComObject(yourobj)代码。我知道这真的很痛苦

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

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

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


最后一点注意:不要在服务器上使用,这是不好的,按照Microsoft自己的话来说,这是完全受管理的。

首先,检查任务管理器以查看有多少WINWORD.exe实例正在运行(如果有的话)。编辑:只需看看下面的Vinzz答案,他和我的答案是一样的,只是有一个更彻底的答案。没有运行Winword.exe的实例。程序完成后,用户手动关闭word应用程序。在此之后,winword.exe将从任务管理器中消失。如果存在任何“重影”,我是否应该在任务管理器进程列表中看到word或excel正在运行?我之前曾尝试释放excel COM对象,因为我注意到excel仍在任务管理器中运行。直到几天前我才知道“鬼魂”,所以我不确定我是否做对了,但任务管理器中不再运行Excel。Word由用户手动关闭,这意味着我不必清除“Word重影”。在本例中,重影实际上是任务管理器中剩余的excel.exe进程。如果您没有任何剩余流程,问题可能出在其他地方。您的程序是否正确终止?您是否能够删除生成的.docx文件?如果没有,程序中仍然有一个句柄。