日期:2014-05-18  浏览次数:20695 次

该文件被另一进程使用 无法删除。。。
C# code

private void MergerPrintFiles(string targetDocument, string[] appendFiles)
        {
            if (File.Exists(targetDocument))
            {
                File.Delete(targetDocument);
            }

            Package container = Package.Open(targetDocument, FileMode.Create);
            XpsDocument xpsDoc = new XpsDocument(container);
            XpsDocumentWriter xpsWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
            FixedDocumentSequence seqNew = new FixedDocumentSequence();

            foreach (string sourceDocument in appendFiles)
            {
                XpsDocument xpsOld = null;
                try
                {
                    xpsOld = new XpsDocument(sourceDocument, FileAccess.Read);
                    FixedDocumentSequence seqOld = xpsOld.GetFixedDocumentSequence();
                    foreach (DocumentReference r in seqOld.References)
                    {
                        DocumentReference newRef = new DocumentReference();
                        (newRef as IUriContext).BaseUri = (r as IUriContext).BaseUri;
                        newRef.Source = r.Source;
                        seqNew.References.Add(newRef);
                    }
                }
                catch { }
                finally
                {
                    xpsOld.Close();
                }
            }

            FixedPage page = (seqNew.DocumentPaginator.GetPage(0).Visual) as FixedPage;
            page.UpdateLayout();
            xpsWriter.Write(seqNew);
            xpsDoc.Close();
            container.Close();

            foreach (string fileFullName in appendFiles)
            {
                FileInfo fileInfo = new FileInfo(fileFullName);
                if (fileInfo.Exists) fileInfo.Delete();
            }
           
        }


这个方法是把几个xps文件 合并到一个xps文件里 用于打印功能 。。
现在遇到了点问题 比如 我现在有1.xps、2.xps、3.xps、4.xps、5.xps 合并成a.xps 合并完成之后要把1、2、3、4、5这几个文件删除掉 但是最后的5.xps删除不掉 出现该文件正在被另一进程使用 无法删除 前面几个文件可以删除 。。。哪位大神能帮小弟解决?

------解决方案--------------------
做个循环,异常处理,如果异常,就等待一段时间再去执行操作
但这样必须要保证你那个被使用的文件会正确的被另一个使用的进程所释放