FileSystemWatcher的Changed事件重复触发问题
问题描述:
使用FileSystemWatcher类监控文本文件变化时,每次修改并保存文件,OnChanged事件都会触发两次。
代码示例:
<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>
原因分析:
这是FileSystemWatcher类已知的一个限制。当应用程序(例如记事本)批量执行文件系统操作时,即使只修改了一个文件,该类也会触发多个文件系统事件。
解决方案:
虽然NotifyFilter
属性有时可以缓解这个问题,但在某些情况下可能需要手动过滤重复事件。
优化FileSystemWatcher使用的建议:
NotifyFilters.LastWrite
选项,因为它也可能导致事件重复触发。以上是为什么我的FileSystemWatcher触发了两次更改的事件?的详细内容。更多信息请关注PHP中文网其他相关文章!