Gewusst wie: Abwarten angegebener Dateisystemereignisse

Aktualisiert: November 2007

Mit der FileSystemWatcher-Komponente können Sie ein bestimmtes Verzeichnis sofort überwachen. Sie können aber auch die WaitForChanged-Methode verwenden, um ein bestimmtes Ereignis abzuwarten und dann mit der Ausführung des Threads fortzufahren. Wenn Sie beispielsweise mit einer webbasierten Nachrichtenanwendung arbeiten, können Sie einen Admin-Bereich der Site erstellen, auf die Benutzer ihre Artikel hochladen. Sie könnten das Nachrichtenverzeichnis mit der WaitForChanged-Methode überwachen und es, sobald sich das Datum des letzten Zugriffs ändert, nach neuen Artikeln durchsuchen.

Sie bestimmen die Art der zu überwachenden Änderung, indem Sie den Wert der WatcherChangeTypes-Enumeration festlegen. Mögliche Werte sind Created, Changed, Renamed, Deleted oder All. Wenn Sie für den Wert All festlegen, werden alle Änderungen am Verzeichnis registriert. Sie können auch mit einer Zeitüberschreitung arbeiten, wenn das Ereignis nach Ablauf eines gewissen Zeitraum nicht mehr ausgelöst werden soll.

Die WaitForChanged-Methode gibt ein Objekt vom Typ WaitForChangedResult zurück. Diese Klasse enthält spezielle Informationen zur Art der im Verzeichnis erfolgten Änderung. Sie können auf Informationen wie Name, OldName und TimedOut dieses Objekts zugreifen, um mehr über die Änderung herauszufinden.

WaitForChanged ist eine synchrone Methode. Wird sie in einer Windows-Anwendung verwendet, so reagiert die Anwendung nicht mehr, wenn die Methode mit dem UI-Thread anstelle des Arbeitsthreads verwendet wird. Weitere Informationen über Threadingprobleme in Visual Basic finden Sie unter Multithreading in Visual Basic.

So warten Sie auf Änderungen

  1. Erstellen und konfigurieren Sie die Instanz der FileSystemWatcher-Komponente, um das zu überwachende Verzeichnis anzugeben. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Instanzen von FileSystemWatcher-Komponenten oder unter Gewusst wie: Konfigurieren von Instanzen von FileSystemWatcher-Komponenten.

  2. Erstellen Sie im Code-Editor eine Instanz der WaitForChangedResult-Klasse.

    Dim result As System.IO.WaitForChangedResult
    
     System.IO.WaitForChangedResult result;
    
  3. Geben Sie für die Instanz der FileSystemWatcher-Komponente den Ereignistyp an, auf den gewartet wird. Legen Sie dazu als Wert der WaitForChanged-Eigenschaft einen der Werte der WatcherChangeTypes-Enumeration fest.

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

    Sie können mit einem überladenen Formular der WaitForChanged-Methode einen Wert für das Timeout als zweiten Parameter angeben.

  4. Geben Sie an, welche Aktionen durchgeführt werden sollen, nachdem die überwachte Änderung erfolgt ist. Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen von Handlern für Dateisystemereignisse.

    Mit dem folgenden Code wird ein Benutzer benachrichtigt, dass eine Datei gelöscht werden muss. Anschließend wird das Deleted-Ereignis ausgelöst. Dieser Code überwacht den persönlichen Ordner des Benutzers.

    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.");
    

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Instanzen von FileSystemWatcher-Komponenten

Gewusst wie: Konfigurieren von Instanzen von FileSystemWatcher-Komponenten

Gewusst wie: Erstellen von Handlern für Dateisystemereignisse

Konzepte

Einführung in die Überwachung von Dateisystemereignissen