为什么Word在文档上调用Close()后才释放我的文件?

时间:2009-11-17 14:30:03

标签: c# ms-word

我正在使用MS Word COM API从C#打印Word文档。见下文......

    internal void PrintWordFileUsingDefaultPrinter(System.IO.FileInfo file)
    {
        //Open the document.
        object fileName = file.FullName;
        Document doc = app.Documents.Open(
            ref fileName, 
            ref missing, 
            ref trueValue, 
            ref falseValue, 
            ref missing, 
            ref missing, 
            ref missing, 
            ref missing, 
            ref missing, 
            ref missing, 
            ref missing, 
            ref missing, 
            ref missing, 
            ref missing, 
            ref missing, 
            ref missing);

        //Send print job to the printer.
        doc.PrintOut(
            ref trueValue,
            ref falseValue,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing,
            ref missing);

        doc.Close(ref falseValue, ref missing, ref missing);

    }

你会看到我通过调用doc.Close()来完成。但是,即使在调用此Word后仍然锁定我的文件,我无法进一步处理它。知道我怎么强迫单词释放我的文件?

(除了关闭Word进程本身?我不想这样做,因为我需要打印大量文档而不想每次都重新打开Word)

3 个答案:

答案 0 :(得分:0)

完成处理后,您可以尝试将对象doc设置为null吗?

答案 1 :(得分:0)

你确定它不是后台打印吗?如果是这样,你可以告诉它同步打印。省略打印是否会在关闭时解锁文件?

答案 2 :(得分:0)

您必须为文档实例调用Marshal.ReleaseComObject才能发布该文档。

e.g。 Marshal.ReleaseComObject(doc);

您还需要释放Word.Application的实例以从内存中释放单词应用程序实例。