Heim >Backend-Entwicklung >C++ >Warum löst mein Dateisystemwatcher das geänderte Ereignis zweimal aus?
Das geänderte Ereignis von Dateisystemwatcher wiederholt das Problem mit wiederholten Triggern
Problembeschreibung:
Wenn sich die Überwachung der Textdatei mithilfe der Dateisystemwatcher -Klasse ändert, wird das On -Changed -Ereignis jedes Mal, wenn sie geändert und gespeichert wird, zweimal aus.
Code Beispiel:
Analyse der Ursache:
<code class="language-csharp">public void Initialize() { FileSystemWatcher fileWatcher = new FileSystemWatcher(); fileWatcher.Path = "C:\Folder"; fileWatcher.NotifyFilter = NotifyFilters.LastWrite; fileWatcher.Filter = "Version.txt"; fileWatcher.Changed += new FileSystemEventHandler(OnChanged); fileWatcher.EnableRaisingEvents = true; } private void OnChanged(object source, FileSystemEventArgs e) { // ...事件处理逻辑... }</code>Dies ist eine Einschränkung, die der Dateisystemwatcher -Klasse bekannt ist. Wenn die Anwendung (z. B. Notepad) das Dateisystem in Stapeln ausführt, auch wenn nur eine Datei geändert wird, löst diese Klasse mehrere Dateisystemereignisse aus.
Lösung:
Obwohl Attribute dieses Problem manchmal lindern können, müssen sie in einigen Fällen möglicherweise manuell filtern und Vorfälle wiederholen.
Optimieren Filter wiederholen Ereignisse basierend auf anderen Bedingungen (z. B. Dateigröße oder Inhalt).
vermeiden Sie die Option , da sie auch wiederholte Auslöser des Vorfalls verursachen kann. NotifyFilter
Das obige ist der detaillierte Inhalt vonWarum löst mein Dateisystemwatcher das geänderte Ereignis zweimal aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!