Compartir a través de


Cómo: Esperar hasta que se produzcan los eventos especificados del sistema de archivos

Actualización: noviembre 2007

Además de utilizar el componente FileSystemWatcher para supervisar de forma inmediata un directorio específico, puede utilizar el método WaitForChanged para esperar hasta que se produzca un evento específico y después continuar con la ejecución del subproceso. Por ejemplo, si está trabajando con una aplicación de noticias basada en Web, puede crear una parte administrativa en el sitio donde los usuarios carguen las noticias que redacten. Puede utilizar el método WaitForChanged para inspeccionar este directorio hasta que cambie la fecha en que se utilizó por última vez y, a continuación, empezar a procesar el directorio de noticias para buscar nuevos artículos.

Para especificar el tipo de cambio que se va a inspeccionar, asigne un valor a la enumeración WatcherChangeTypes. Los valores posibles son Created, Changed, Renamed, Deleted o All. Si se establece el valor en All, se inspeccionarán todos los cambios del directorio. También puede especificar un período de tiempo de espera, si sólo desea esperar a que se produzca el evento durante un determinado período de tiempo.

El método WaitForChanged devuelve un objeto de tipo WaitForChangedResult. Esta clase contiene información específica sobre el tipo de cambio que se produjo en el directorio. Puede tener acceso a información como Name, OldName y TimedOut relacionada con este objeto, para saber más acerca del cambio.

WaitForChanged es un método sincrónico. Si lo utiliza en una aplicación para Windows, la aplicación se detendrá si el método se utiliza en el subproceso de interfaz de usuario en lugar de en el subproceso de trabajo. Para obtener más información sobre los aspectos relacionados con el subprocesamiento en Visual Basic, vea Subprocesamiento múltiple en Visual Basic.

Para esperar cambios

  1. Cree y configure la instancia del componente FileSystemWatcher para que indique el directorio que desea inspeccionar. Para obtener más información, vea Cómo: Crear instancias de componentes FileSystemWatcher o Cómo: Configurar instancias de componentes FileSystemWatcher.

  2. En el Editor de código, cree una instancia de la clase WaitForChangedResult.

    Dim result As System.IO.WaitForChangedResult
    
     System.IO.WaitForChangedResult result;
    
  3. En la instancia del componente FileSystemWatcher, especifique el tipo de evento que está esperando; para ello, establezca el valor de la propiedad WaitForChanged en uno de los valores de la enumeración WatcherChangeTypes.

    fileSystemWatcher1.WaitForChanged(System.IO.WatcherChangeTypes.All)
    
         fileSystemWatcher1.WaitForChanged(System.IO.WatcherChangeTypes.All);
    
    Sugerencia:

    Puede utilizar una forma sobrecargada del método WaitForChanged para especificar un período de tiempo de espera como segundo parámetro.

  4. Especifique las acciones que desee que se ejecuten cuando se produzca el cambio que está inspeccionando. Para obtener más información, vea Cómo: Crear controladores para los eventos del sistema de archivos.

    En el código siguiente se muestra cómo se notifica a un usuario que es necesario eliminar un archivo y, a continuación, esperar a que se produzca el evento Deleted. Este código inspecciona la carpeta personal del usuario.

    Console.WriteLine("Please delete OldNote.txt.")
    Dim directory As String
    directory = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
    Dim watcher As New System.IO.FileSystemWatcher(directory, "OldNote.txt")
    result = watcher.WaitForChanged(System.IO.WatcherChangeTypes.Deleted)
    Console.WriteLine("Thanks for deleting OldNote.txt.")
    
         Console.WriteLine("Please delete OldNote.txt.");
            string directory =
               Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            System.IO.FileSystemWatcher watcher =
               new System.IO.FileSystemWatcher(directory, "OldNote.txt");
            result = watcher.WaitForChanged(System.IO.WatcherChangeTypes.Deleted);
            Console.WriteLine("Thanks for deleting OldNote.txt.");
    

Vea también

Tareas

Cómo: Crear instancias de componentes FileSystemWatcher

Cómo: Configurar instancias de componentes FileSystemWatcher

Cómo: Crear controladores para los eventos del sistema de archivos

Conceptos

Introducción a la supervisión de eventos del sistema de archivos