Exemplarische Vorgehensweise: Reagieren auf Dateisystemereignisse

Aktualisiert: November 2007

Die Prozeduren auf dieser Seite zeigen die Schritte zum Erstellen einer FileSystemWatcher-Komponente. Darüber hinaus wird erläutert, wie diese ein Verzeichnis auf dem lokalen Computer und mithilfe der Filter-Eigenschaft ausschließlich Änderungen an Textdateien überwacht. Dabei werden Sie einen Ereignishandler erstellen, der reagiert, wenn das Created-Ereignis und das Changed-Ereignis ausgelöst werden, und Sie zeigen mithilfe eines Formulars die bei diesen Ereignissen eingeblendeten Benachrichtigungen an.

In der folgenden Prozedur erstellen Sie in Windows Form ein Formular und eine FileSystemWatcher-Komponenteninstanz, die zusammenwirken und gemeinsam auf Ereignisse auf Verzeichnisebene reagieren.

Hinweis:

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Erstellen der Anwendung

So erstellen Sie das Formular und die für die Anwendung benötigten Komponenten

  1. Erstellen Sie im Dialogfeld Neues Projekt eine Windows-Anwendung für Visual Basic oder Visual C#, und nennen Sie es MyWatcher.

  2. Ziehen Sie von der Registerkarte Windows Forms in der Toolbox zwei Label-Steuerelemente auf die Designeroberfläche.

  3. Klicken Sie in der Toolbox auf die Registerkarte Komponenten, und ziehen Sie FileSystemWatcher auf die Designeroberfläche für die Komponente. Der Name dieser Komponente lautet standardmäßig FileSystemWatcher1.

Überwachen eines Verzeichnisses

In der folgenden Prozedur legen Sie für die Komponente verschiedene Eigenschaften fest, die bestimmen, welche Ereignisse überwacht werden. Diese Einstellungen bewirken, dass die Komponente das angegebene Verzeichnis auf Ihrem lokalen Computer sowie die Erstellung von Dateien mit der Dateinamenerweiterung TXT überwacht.

So legen Sie die Eigenschaften für die FileSystemWatcher-Komponente fest

  1. Klicken Sie auf die in der vorigen Prozedur erstellte FileSystemWatcher-Komponente, und zeigen Sie deren Eigenschaften im Eigenschaftenfenster an.

  2. Legen Sie für die Komponente den Namen myWatcher fest.

  3. Legen Sie mithilfe der Path-Eigenschaft fest, dass die FileSystemWatcher-Komponente ein Verzeichnis auf dem lokalen Computer überwacht. Geben Sie auf einem Computer unter Microsoft Windows 2000 beispielsweise Folgendes in die Path-Eigenschaft ein, um festzulegen, dass die Komponente das Verzeichnis Eigene Dateien überwacht:

    C:\Documents and Settings\yourusername\My Documents\
    
    Tipp:

    In diesem Beispiel können Sie jedes beliebige Verzeichnis auf dem lokalen Computer verwenden.

  4. Legen Sie die Filter-Eigenschaft auf *.txt fest. Damit überwacht die Komponente nur Dateien, die auf die Erweiterung TXT enden.

Behandeln von ausgelösten Ereignissen

In der folgenden Prozedur definieren Sie zwei Ereignishandler für Ihre Komponente, die definieren, welche Aktion nach dem Auslösen des Changed-Ereignisses und des Created-Ereignisses ausgeführt wird.

So konfigurieren Sie die Komponente

  1. Doppelklicken Sie auf die FileSystemWatcher-Komponente. Daraufhin werden der Code-Editor und ein standardmäßiger Ereignishandler für das Changed-Ereignis angezeigt.

    Hinweis:

    Weitere Informationen finden Sie unter Erstellen von Ereignishandlern in Windows Forms.

  2. Zeigen Sie mit folgendem Code eine einfache Textzeichenfolge an, um zu prüfen, ob das Ereignis ausgelöst wurde:

    Private Sub myWatcher_Changed(ByVal sender As System.Object, _
       ByVal e As System.IO.FileSystemEventArgs) Handles myWatcher.Changed
       Me.Label1.Text = "Changes made to: " & e.FullPath
    End Sub
    
    private void myWatcher_Changed(object sender, 
       System.IO.FileSystemEventArgs e)
    {
       label1.Text = "Changes made to: " + e.FullPath;
    }
    
  3. Erstellen Sie den Ereignishandler für das Created-Ereignis. Dieser gibt an, welche Aktion die Anwendung ausführt, wenn die Komponente dieses Ereignis auslöst. Weitere Informationen zum Erstellen von Ereignishandlern finden Sie unter Gewusst wie: Erstellen von Ereignishandlern mithilfe des Designers. Fügen Sie den folgenden Code ein, um den vollständigen Pfad der neu erstellten Datei anzuzeigen. Als Ergebnis sollte der Code ungefähr wie im folgenden Beispiel aussehen.

    Private Sub myWatcher_Created(ByVal sender As System.Object, _
       ByVal e As System.IO.FileSystemEventArgs) Handles myWatcher.Created
       Me.Label2.Text = "The file: " & e.FullPath & _
          " has been added to your directory"
    End Sub
    
    private void myWatcher_Created(object sender,
       System.IO.FileSystemEventArgs e)
    {
       label2.Text = "The file: " + e.FullPath + 
          " has been added to your directory.";
    }
    
  4. Speichern Sie alle Dateien, erstellen Sie anschließend die Anwendung, und führen Sie sie aus.

Testen der Komponente

Im der folgenden Prozedur nehmen Sie manuell Änderungen an dem von der Komponente überwachten Verzeichnis vor. Dadurch können Sie erzwingen, dass der Ereignishandler das Changed-Ereignis und das Created-Ereignis auslöst.

So testen Sie die FileSystemWatcher-Komponente

  1. Führen Sie die in der vorherigen Prozedur erstellte Anwendung aus.

  2. Wechseln Sie im Windows Explorer zu dem Verzeichnis, das von der FileSystemWatcher-Komponente überwacht wird.

  3. Starten Sie den Editor, und erstellen Sie eine neue Textdatei. Speichern Sie diese Datei in dem in Schritt 2 aufgerufenen Verzeichnis, und schließen Sie die Datei.

    Hinweis:

    Mit dieser Prozedur sollten das Created-Ereignis und das Changed-Ereignis ausgelöst und der definierte Handler ausgeführt werden.

  4. Kehren Sie wieder zum Formular zurück. Im Bezeichnungsfeld wird nun die erstellte Meldung angezeigt.

  5. Öffnen Sie die erstellte Textdatei, geben Sie einige Zeilen Text ein, und speichern Sie die Datei erneut.

    Hinweis:

    Mit dieser Prozedur sollte das Changed-Ereignis ausgelöst und der definierte Handler ausgeführt werden.

  6. Kehren Sie wieder zum Formular zurück. Im Bezeichnungsfeld wird nun die Änderungsmeldung angezeigt.

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Instanzen von FileSystemWatcher-Komponenten

Konzepte

Einführung in die Überwachung von Dateisystemereignissen

Weitere Ressourcen

Label-Steuerelement (Windows Forms)