Созданный файл все еще заблокирован - PullRequest
0 голосов
/ 07 ноября 2018

Я использую OpenXML SDK для создания и сохранения текстового документа.

Я использую блок «Использование» для создания и удаления потока памяти и текстового объекта документа, когда они завершены. Однако при попытке открыть файл я получаю сообщение об ошибке, что файл все еще используется другим процессом. Глядя на Resource Monitor, я смог обнаружить, что это мое приложение на c #, которое по-прежнему остается открытым. Когда я закрываю свое приложение, я могу использовать файл

У меня есть следующий код.

private void button2_Click(object sender, EventArgs e)
{
    // Create Stream
    using (MemoryStream mem = new MemoryStream())
    {
        // Create Document
        using (WordprocessingDocument wordDocument = WordprocessingDocument.Create(mem, WordprocessingDocumentType.Document, true))
        {
            // Add a main document part. 
            MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();

            // Create the document structure and add some text.
            mainPart.Document = new Document();
            Body docBody = new Body();
            mainPart.Document.Append(docBody);
            wordDocument.SaveAs(@"E:\Report\word.docx");
            // Add your docx content here
            wordDocument.Close();
        }
    }
}

Правильно ли я понимаю, что

using (MemoryStream mem = new MemoryStream())

должен утилизировать MemoryStream после завершения блока и, следовательно, разрешить использование файла другим процессом?

Спасибо

1 Ответ

0 голосов
/ 07 ноября 2018

SaveAs возвращает новый объект пакета, представляющий пакет, сохраненный в этом файле. Вам нужно Close этот пакет тоже.

wordDocument.SaveAs(@"E:\Report\word.docx").Close();
...