首页 > 解决方案 > FileSystemWatcher 无法检测到 1 个文件的变化(添加新文件),只能检测到至少 2 个文件

问题描述

FileSystemWatcher 无法检测到1 个文件的变化(添加新文件),只能检测到至少2 个文件。观察者仅在以下情况下调用Changed事件:

  • 将多个文件复制到C :\PortViewer
  • 仅将1 个文件复制到C:\PortViewer,我必须在Windows文件资源管理器中打开C:\PortViewer
        FileSystemWatcher watcher;
        private void StartWatcher()
        {
            Directory.CreateDirectory(@"C:\PortViewer");
            watcher = new FileSystemWatcher();
            watcher.Path = @"C:\PortViewer";
            watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                                   | NotifyFilters.FileName | NotifyFilters.DirectoryName;
            watcher.Filter = "*.*";
            watcher.Changed += (s,e) => { /*Do work here*/ };
            watcher.EnableRaisingEvents = true;
        }

标签: c#filesystemwatcher

解决方案


NotifyFilters.CreatedTime是解决方案:

        FileSystemWatcher watcher;
        private void StartWatcher()
        {
            Directory.CreateDirectory(@"C:\PortViewer");
            watcher = new FileSystemWatcher();
            watcher.Path = @"C:\PortViewer";
            watcher.NotifyFilter = NotifyFilters.CreatedTime;
            watcher.Filter = "*.*";
            watcher.Changed += (s,e) => { /*Do work here*/ };
            watcher.EnableRaisingEvents = true;
        }

推荐阅读