我的c#应用程序在任务管理器中创建winword并从taskmanager正确关闭。但是如果我的应用程序崩溃,那么winword将在任务管理器中保持打开状态,并且无法处理这些word文档。
所以在这种情况下,我想单独杀死那些由我的应用程序创建的winword,而不是全部。
请帮助完成此操作。
答案 0 :(得分:1)
当通过互操作创建winword.exe的实例时,它们将在进程命令行中包含字符串“/ Automation -Embedding”。
因此,如果您只想手动杀死互操作winword进程,而不杀死任何用户启动的Microsoft Word实例,您可以打开Mark Russinovich的免费ProcessExplorer实用程序,右键单击带有winword.exe的行,选择“属性“,然后查看命令行(在”图像“选项卡中)。如果您看到/ Automation开关,您将知道它是一个互操作过程,您可以将其删除。以下是Interop winword.exe在ProcessExplorer中的外观:
答案 1 :(得分:0)
尝试以下方法:
try
{
// open your word document
// process your word document
}
catch
{
// handle any errors (e.g. provide error messages
}
finally
{
// close the word document properly
}
要防止孤立的字处理,您需要在应用程序中以中央方式存储打开的进程,并在关闭应用程序之前关闭所有剩余的进程。此外,您可以注册到未处理的错误事件,然后在发生这种情况时关闭所有进程。
如果在大多数情况下无法打开文档,则关闭单词进程是不可行的,因为该文档可能会在“真实”单词实例中打开进行编辑。