代码之家  ›  专栏  ›  技术社区  ›  Adam Shakhabov

打开XML SDK:“进程无法访问文件“x”,因为它正被另一个进程使用。”

  •  3
  • Adam Shakhabov  · 技术社区  · 6 年前

    这是我的代码,用于修改PowerPoint演示文稿,将其保存为新文件,关闭它,然后尝试打开该文件。

    var doc = PresentationDocument.Open(@"d:\temp.pptx", true);    
    //... proccess presentation
    doc.SaveAs(@"d:\temp2.pptx");
    doc.Close();
    
    var doc2 = PresentationDocument.Open(@"d:\temp2.pptx", false);
    doc2.Close();
    

    我无法理解为什么运行时会引发异常:

    进程无法访问文件“x”,因为它正由使用 另一个过程。

    2 回复  |  直到 6 年前
        1
  •  9
  •   Adam Shakhabov    6 年前

    我注意到了 doc.SaveAs() return对象,我刚刚关闭

    var savedDoc = doc.SaveAs(@"d:\temp2.pptx") as PresentationDocument;
    
    savedDoc.Close();
    
        2
  •  0
  •   george warner    6 年前

    您必须用using语句打开演示文稿。大致如下:

    using (var doc = PresentationDocument.Open(@"d:\temp.pptx", true))
    {    
    //... proccess presentation
    doc.SaveAs(@"d:\temp2.pptx");
    doc.Close(); //may be unnecessary
    }