Warum wird der FileSystemWatcher zweimal ausgelöst? Gibt es eine einfache Möglichkeit, es zu beheben? Sicher, wenn ich die Textdatei aktualisiere oder bearbeite, sollte sie nur einmal ausgelöst werden?
diesen Link hier Ссылка sagt
- Ereignisse werden zweimal ausgelöst - Ein Ereignis wird zweimal ausgelöst, wenn ein Event-Handler (AddHander FSW.Created, AddressOf FSW_Created) ist explizit angegeben. Dies liegt normalerweise an den öffentlichen Ereignissen automatisch die entsprechenden geschützten Methoden aufrufen (OnChanged, OnCreated, OnDeleted, OnRenamed). Um dieses Problem einfach zu beheben Entfernen Sie den expliziten Ereignishandler (AddHandler ...).
Was bedeutet "den expliziten Ereignishandler entfernen"?
%Vor%Aktualisierung:
Ich habe zwei Lösungen gefunden. Einer verwendet Threads und der andere nicht. Treffen Sie Ihre Wahl: -).
Ohne Threading:
%Vor%Diese Lösung (ohne Threading) setzt den Watcher.EnableRaisingEvents auf False. Es ist nach diesem Punkt, wo Sie normalerweise verarbeiten würden, welche Dateien betroffen sind (oder geändert werden). Anschließend werden die EnableRaisingEvents nach Abschluss der Arbeit auf True zurückgesetzt.
Mit threading:
%Vor%Diese Lösung, obwohl ein bisschen hacky , funktioniert. Es deaktiviert die Überprüfung auf neue Änderungen / Ereignisse für 250ms und aktiviert dann die Überprüfung erneut, basierend auf der Annahme, dass Sie nicht alle 250ms auf eine Änderung prüfen müssen. Ich habe fast alles versucht, was mir einfällt, um eine echte Lösung für Sie zu finden, aber das wird in der Zwischenzeit funktionieren.
Tags und Links visual-studio-2010 vb.net filesystemwatcher