文件有时保存工作而不是其他人?

时间:2012-02-20 19:08:48

标签: c# ms-word

我有一个复制.docx模板的脚本,将其复制到具有唯一名称的其他位置,修改它,然后保存它。有时,在保存时,我收到文件权限错误。这很奇怪,因为我将使用相同的输入,有时会出现错误,有时则不会出现错误。这是我的代码:

        File.Copy(Utilities.GetTemplateFilePath(), outputPath);

        object path = outputPath;
        object readOnly = false;
        object o = System.Reflection.Missing.Value;

        var document = word.Documents.Open(ref path, ref o, ref readOnly, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o, ref o);

        PopulateField(document.Paragraphs, 19, "aValue");
        while (true) {
            try {
                document.Save();
                break;
            }
            catch {
                System.Threading.Thread.Sleep(100);
            }
        }

        var documentClose = (Microsoft.Office.Interop.Word._Document)document;
        documentClose.Close();

另一个重要的提示是,当出现此问题时,在我正在写入的目录中有.tmp文件。知道这里发生了什么吗?

  

错误:由于文件权限错误,Word无法完成保存   (C:... \ Document.docx)

1 个答案:

答案 0 :(得分:1)

您正在挂起,因为您没有丢弃COMInterop对象 尝试在执行document.Close()

后添加此代码
System.Runtime.InteropServices.Marshal.ReleaseComObject( document  );