BackGround Worker en c # para analizar la lista de archivos evitando de forma recursiva la excepción de acceso denegado

Estoy tratando de enumerar todos los archivos de una carpeta / unidad, incluidos los subdirectorios, mientras ignoro la excepción de acceso denegado que surge cuando uso el método Directory.GetFiles ().

Tengo el método. El problema es que el método implica llamadas recursivas a sí mismo, no puedo llamar al trabajador en segundo plano de forma recursiva. ¿Cómo puedo implementar este método como un trabajo en segundo plano?

 static void WalkDirectoryTree(System.IO.DirectoryInfo root)
{
    System.IO.FileInfo[] files = null;
    System.IO.DirectoryInfo[] subDirs = null;

    // First, process all the files directly under this folder
    try
    {
        files = root.GetFiles("*.*");
    }
    // This is thrown if even one of the files requires permissions greater
    // than the application provides.
    catch (UnauthorizedAccessException e)
    {
        // This code just writes out the message and continues to recurse.
        // You may decide to do something different here. For example, you
        // can try to elevate your privileges and access the file again.
        log.Add(e.Message);
    }

    catch (System.IO.DirectoryNotFoundException e)
    {
        Console.WriteLine(e.Message);
    }

    if (files != null)
    {
        foreach (System.IO.FileInfo fi in files)
        {
            // In this example, we only access the existing FileInfo object. If we
            // want to open, delete or modify the file, then
            // a try-catch block is required here to handle the case
            // where the file has been deleted since the call to TraverseTree().
            Console.WriteLine(fi.FullName);
        }

        // Now find all the subdirectories under this directory.
        subDirs = root.GetDirectories();

        foreach (System.IO.DirectoryInfo dirInfo in subDirs)
        {
            // Resursive call for each subdirectory.
            WalkDirectoryTree(dirInfo);
        }
    }            
}

}

preguntado el 10 de marzo de 12 a las 07:03

1 Respuestas

Muy fácil: simplemente llame a este método dentro de su método de cuerpo de trabajadores de fondo.

respondido 10 mar '12, 07:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.