Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
Verwenden Sie FileSystemWatcher, um auf Änderungen in einem angegebenen Verzeichnis zu achten. Sie können auf Änderungen in Dateien und Unterverzeichnissen des angegebenen Verzeichnisses achten. Sie können eine Komponente erstellen, um Dateien auf einem lokalen Computer, einem Netzlaufwerk oder einem Remotecomputer anzuzeigen.
Wenn Sie auf Änderungen in allen Dateien achten möchten, legen Sie die Filter Eigenschaft auf eine leere Zeichenfolge ("") fest, oder verwenden Sie Wildcards ("*.*"). Um eine bestimmte Datei anzuzeigen, legen Sie die Filter Eigenschaft auf den Dateinamen fest. Wenn Sie beispielsweise auf Änderungen in der Datei MyDoc.txtachten möchten, legen Sie die Filter Eigenschaft auf "MyDoc.txt" fest. Sie können auch auf Änderungen in einem bestimmten Dateityp achten. Wenn Sie beispielsweise auf Änderungen in Textdateien achten möchten, legen Sie die Filter Eigenschaft auf "*.txt" fest.
Es gibt mehrere Arten von Änderungen, auf die Sie in einem Verzeichnis oder einer Datei achten können. Sie können z. B. nach Änderungen in Attributes
, dem Datum LastWrite
und der Uhrzeit oder den Dateien Size
oder Verzeichnissen suchen. Dazu legen Sie die NotifyFilter Eigenschaft auf einen der NotifyFilters Werte fest. Weitere Informationen zur Art der Änderungen, die Sie ansehen können, finden Sie unter NotifyFilters.
Sie können auf das Umbenennen, Löschen oder Erstellen von Dateien oder Verzeichnissen achten. Wenn Sie beispielsweise die Umbenennung von Textdateien überwachen möchten, legen Sie die Filter Eigenschaft auf "*.txt" fest, und rufen Sie die WaitForChanged Methode mit einem Renamed angegebenen Parameter auf.
Das Windows-Betriebssystem benachrichtigt Ihre Komponente über Dateiänderungen in einem Puffer, der von der FileSystemWatcher erstellt wurde. Wenn es in kurzer Zeit viele Änderungen gibt, kann der Puffer überlaufen. Die Komponente verliert dadurch die Fähigkeit, Änderungen im Verzeichnis nachzuverfolgen, und wird nur allgemeine Benachrichtigungen bereitstellen. Die Vergrößerung des Puffers mit der Eigenschaft InternalBufferSize ist teuer, da er aus nicht ausgelagertem Speicher stammt, der nicht auf Datenträger ausgelagert werden kann. Halten Sie den Puffer also so klein, aber groß genug, dass Sie keine Ereignisse verpassen, bei denen sich die Datei ändert. Um einen Pufferüberlauf zu vermeiden, verwenden Sie die NotifyFilter- und IncludeSubdirectories-Eigenschaften, damit Sie unerwünschte Änderungsbenachrichtigungen herausfiltern können.
Eine Liste der anfänglichen Eigenschaftswerte für eine Instanz von FileSystemWatcher, finden Sie im FileSystemWatcher Konstruktor.
Überlegungen bei der Verwendung der FileSystemWatcher Klasse:
- Versteckte Dateien werden nicht ignoriert.
- In einigen Systemen meldet FileSystemWatcher Änderungen an Dateien unter Verwendung des kurzen 8.3-Dateinamenformats. Beispielsweise könnte eine Änderung in "LongFileName.LongExtension" als "LongFil~.Lon" gemeldet werden.
- Diese Klasse enthält einen Link-Bedarf und einen Vererbungsbedarf auf Klassenebene, der für alle Mitglieder gilt. Ein SecurityException wird ausgelöst, wenn entweder der unmittelbare Aufrufer oder die abgeleitete Klasse nicht über die Berechtigung zur vollen Vertrauenswürdigkeit verfügt. Ausführliche Informationen zu Sicherheitsanforderungen finden Sie unter Linkanforderungen.
- Die maximale Größe, die Sie für die Eigenschaft für die InternalBufferSize Überwachung eines Verzeichnisses über das Netzwerk festlegen können, beträgt 64 KB.
Kopieren und Verschieben von Ordnern
Das Betriebssystem und FileSystemWatcher das Objekt interpretieren eine Ausschneiden-und-Einfügen-Aktion oder eine Verschiebungsaktion als Umbenennungsaktion für einen Ordner und dessen Inhalt. Wenn Sie einen Ordner mit Dateien ausschneiden und in einen überwachten Ordner einfügen, meldet das FileSystemWatcher Objekt nur den Ordner als neu, aber nicht dessen Inhalt, da er im Wesentlichen nur umbenannt wird.
Um benachrichtigt zu werden, dass der Inhalt von Ordnern in einen überwachten Ordner verschoben oder kopiert wurde, stellen Sie OnChanged und OnRenamed Event Handler Methoden bereit, wie in der folgenden Tabelle vorgeschlagen.
Ereignishandler | Behandelte Ereignisse | Leistung |
---|---|---|
OnChanged | Changed, CreatedDeleted | Melden Sie Änderungen an Dateiattributen, erstellten Dateien und gelöschten Dateien. |
OnRenamed | Renamed | Auflisten der alten und neuen Pfade umbenannter Dateien und Ordner, die bei Bedarf rekursiv erweitert werden. |
Ereignisse und Puffergrößen
Beachten Sie, dass sich mehrere Faktoren darauf auswirken können, welche Dateisystemänderungsereignisse ausgelöst werden, wie in den folgenden Schritten beschrieben:
- Allgemeine Dateisystemvorgänge lösen möglicherweise mehr als ein Ereignis aus. Wenn beispielsweise eine Datei von einem Verzeichnis in ein anderes verschoben wird, können mehrere OnChanged- und einige OnCreated- sowie OnDeleted-Ereignisse ausgelöst werden. Das Verschieben einer Datei ist ein komplexer Vorgang, der aus mehreren einfachen Vorgängen besteht, wodurch mehrere Ereignisse ausgelöst werden. Ebenso können Anwendungen wie z. B. Antivirensoftware zusätzliche Dateisystemereignisse auslösen, die von FileSystemWatcher erkannt werden.
- Der FileSystemWatcher kann Datenträger überwachen, solange sie nicht gewechselt oder entfernt werden. Das FileSystemWatcher löst keine Ereignisse für CDs und DVDs aus, weil Zeitstempel und Eigenschaften nicht geändert werden können. Remotecomputer müssen eine der erforderlichen Plattformen installiert haben, damit die Komponente ordnungsgemäß funktioniert.
Beachten Sie, dass ein FileSystemWatcher Ereignis möglicherweise nicht angezeigt wird, wenn die Puffergröße überschritten wird. Um fehlende Ereignisse zu vermeiden, befolgen Sie die folgenden Richtlinien:
- Erhöhen Sie die Puffergröße, indem Sie die InternalBufferSize Eigenschaft festlegen.
- Vermeiden Sie das Ansehen von Dateien mit langen Dateinamen, da ein langer Dateiname dazu beiträgt, den Puffer aufzufüllen. Erwägen Sie, diese Dateien mit kürzeren Namen umzubenennen.
- Halten Sie den Ereignisbehandlungscode so kurz wie möglich.