Сохранение документов работает иногда, но не другие? - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть скрипт, который копирует шаблон .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 Ответ

1 голос
/ 20 февраля 2012

Вы зависаете, потому что вы не избавляетесь от объекта COMInterop попробуйте добавить этот код после выполнения документа. Close ()

System.Runtime.InteropServices.Marshal.ReleaseComObject( document  ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...