我正在读取一个单词文件,因为它创建了单词的第一个对象,然后打开了单词文件。
我要面对的问题是,每当通过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); 未执行导致文件锁定。
有什么解决办法吗?
答案 0 :(得分:0)
Office PIA(主要互操作程序集)是围绕Office应用程序的一组非托管包装。您的代码有效地打开了Word,并像普通(人类)用户一样使用它。如果Word过早关闭,则可能会使文件锁定。您无法控制。
看看OpenXML SDK。 Word文件实际上是XML文档,您无需使用PIA COM互操作即可直接使用它们。 OpenXML比PIA快得多,并且要稳定得多。