每当程序手动崩溃或由于某些问题而崩溃时,Word文件都会被锁定

时间:2018-10-29 08:06:36

标签: asp.net file-locking

我正在读取一个单词文件,因为它创建了单词的第一个对象,然后打开了单词文件。

我要面对的问题是,每当通过word对象打开文件时,如果该程序崩溃或由任务管理器手动结束后,则该word文件将锁定并且无法删除该文件。为此,我需要终止winword.exe进程从任务管理器中释放该过程。

我的代码是:

Word.Application word = new Word.Application();
......//Some code
                Microsoft.Office.Interop.Word.Document doc = word.Documents.Open(filename);
...//some code
try{
                doc.Save();
                ((Word._Document)doc).Close();
}
finally{
                   ((Word._Application)word).Quit(Word.WdSaveOptions.wdDoNotSaveChanges);
}

如果程序崩溃,则此行 ((Word._Application)word).Quit(Word.WdSaveOptions.wdDoNotSaveChanges); 未执行导致文件锁定。

有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

Office PIA(主要互操作程序集)是围绕Office应用程序的一组非托管包装。您的代码有效地打开了Word,并像普通(人类)用户一样使用它。如果Word过早关闭,则可能会使文件锁定。您无法控制。

看看OpenXML SDK。 Word文件实际上是XML文档,您无需使用PIA COM互操作即可直接使用它们。 OpenXML比PIA快得多,并且要稳定得多。

Microsoft OpenXML SDK