none
Eliminar archivos RRS feed

  • Pregunta

  • Buenas tardes,

    Estoy realizando una aplicacion de nombre SplitPDF que me extrae y une varios archivos pdf, esta funcion esta ok, el inconveniente lo tengo cuando voy a eliminar estos archivos para cargar otros, no me los deja eliminar, me dice que otro proceso los esta utilizando; verificando esto, me doy cuenta que es el mismo exe de la aplicaion (SplitPDF.vshost.exe o SplitPDF.exe).

    Alguien me dijo que es una instancia que me los esta utilizando; de ser cierto esto, mi pregunta es, de que manera puedo matar estos procesos para poder liberar los archivos...

    Este el código para adjuntar los PDF:

     private bool Adjuntar()
            {
                var aArchivos = Directory.GetFiles(rutaDir + @"\Convert1");
                var outFile = rutaDir + @"\Finales\Final.pdf";
                var oPdfDoc = new Document();
                var fs = new FileStream(outFile, FileMode.Create);
                var oPdfWriter = PdfWriter.GetInstance(oPdfDoc, fs);
                PdfImportedPage oPdfImportedPage = null;
                
                PdfReader oPdfReader = null;

                oPdfDoc.Open();
                var oDirectContent = oPdfWriter.DirectContent;
                
                try
                {
                    
                    foreach (var t in aArchivos)
                    {
                        oPdfReader = new PdfReader(t);
                        var iNumberOfPages = oPdfReader.NumberOfPages;
                        var iPage = 0;
                        var dirArchivo = t.Split('\\');

                        if (iNumberOfPages > 1)
                        {
                            if (dirArchivo[dirArchivo.Length - 1] != "1.pdf")
                            {
                                if (MessageBox.Show(
                                "El archivo " + dirArchivo[dirArchivo.Length - 1] + " tiene mas de una pagina; desea seleccionar alguna?",
                                "Atencion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                {
                                    var objpagina = new Pagina();
                                    objpagina.ShowDialog(this);
                                }
                            }

                        }
                        while (iPage < iNumberOfPages)
                        {
                            iPage += 1;
                            if (page > 1)
                            {
                                oPdfDoc.SetPageSize(oPdfReader.GetPageSizeWithRotation(page));
                                oPdfDoc.NewPage();

                                oPdfImportedPage = oPdfWriter.GetImportedPage(oPdfReader, page);
                                var iRotation = oPdfReader.GetPageRotation(page);
                                if (iRotation == 90 || iRotation == 270)
                                {
                                    oDirectContent.AddTemplate(oPdfImportedPage, 0, -1.0F, 1.0F, 0, 0, oPdfReader.GetPageSizeWithRotation(page).Height);
                                }
                                else
                                {
                                    oDirectContent.AddTemplate(oPdfImportedPage, 1.0F, 0, 0, 1.0F, 0, 0);
                                }
                                page = 0;
                                break;
                            }
                            else
                            {
                                oPdfDoc.SetPageSize(oPdfReader.GetPageSizeWithRotation(iPage));
                                oPdfDoc.NewPage();

                                oPdfImportedPage = oPdfWriter.GetImportedPage(oPdfReader, iPage);
                                var iRotation = oPdfReader.GetPageRotation(iPage);
                                if (iRotation == 90 || iRotation == 270)
                                {
                                    oDirectContent.AddTemplate(oPdfImportedPage, 0, -1.0F, 1.0F, 0, 0, oPdfReader.GetPageSizeWithRotation(iPage).Height);
                                }
                                else
                                {
                                    oDirectContent.AddTemplate(oPdfImportedPage, 1.0F, 0, 0, 1.0F, 0, 0);
                                }
                            }
                        }
                    }
                    
                    //oPdfWriter.Close();
                    oPdfDoc.Dispose();
                    oPdfDoc.Close();
                    if (oPdfReader != null)
                    {
                        oPdfReader.Dispose();
                        oPdfReader.Close();
                    }
                    //fs.Flush();
                    fs.Dispose();
                    fs.Close();
                    oDirectContent.ClosePath();
                    if (oPdfImportedPage != null) oPdfImportedPage.ClosePath();
                    
                    
                   
                    return true;
                }
                catch (Exception e)
                {
                    return false;
                }
                
            }

    Este es el código que tengo para eliminar:

    foreach (var subfolder in directoryInfo.GetDirectories())
                        {
                            
                            foreach (var a in subfolder.GetFiles())
                            {
                                var objProcesses = Process.GetProcessesByName("SplitPDF");
                                foreach (var objProcess in objProcesses)
                                {
                                    objProcess.CloseMainWindow();
                                    objProcess.WaitForExit();
                                }
                                
                                a.Delete();
                            }
                        }

    Gracias






    • Editado Josep22 viernes, 17 de mayo de 2013 12:51
    jueves, 16 de mayo de 2013 19:41

Todas las respuestas