【问题标题】:Filesystemwatcher is not watching subdirFilesystemwatcher 没有在看子目录
【发布时间】:2021-10-11 15:49:03
【问题描述】:

我正在尝试使用 Docker 卷中的 FileSystemWatcher 监视文件夹中创建/删除/重命名的所有文件。它正在获取正在监视的根目录(大部分时间)上的事件,但即使 IncludeSubdirectories = true,子目录中的任何内容都不会触发事件。观察者被保存为道具。我怎样才能让它观看子目录并触发所有事件,而不仅仅是大多数事件?

    public void StartMonitorService()
    {
        Watcher = new FileSystemWatcher(@"/var/lib/docker/volumes/monitor");
        Watcher.NotifyFilter = NotifyFilters.Attributes
                             | NotifyFilters.CreationTime
                             | NotifyFilters.DirectoryName
                             | NotifyFilters.FileName
                             | NotifyFilters.LastAccess
                             | NotifyFilters.LastWrite
                             | NotifyFilters.Security
                             | NotifyFilters.Size;

        Watcher.Created += OnCreated;
        Watcher.Deleted += OnDeleted;
        Watcher.Renamed += OnRenamed;

        Watcher.Filter = "";
        Watcher.IncludeSubdirectories = true;
        Watcher.EnableRaisingEvents = true; 
    }

【问题讨论】:

    标签: c# docker filesystemwatcher


    【解决方案1】:

    我没有完全解决我的问题,但我可以为任何可能遇到与我相同的问题的人提供解决方法。

    private void OnCreated(object sender, FileSystemEventArgs e)
    {
        if (Directory.Exists(e.FullPath))
        {
            string dirRoot = e.FullPath;
            DateTime lastTimeWriten = Directory.GetLastWriteTime(dirRoot);
            while (true)
            {
                Thread.Sleep(30000);
                if (lastTimeWriten == Directory.GetLastWriteTime(dirRoot))
                    break;
    
                lastTimeWriten = Directory.GetLastWriteTime(dirRoot);
            }
            HashSet<string> fileSet = new HashSet<string>(Directory.GetFileSystemEntries(dirRoot, "*", SearchOption.AllDirectories));
            ...
            _messageService.SendNewSurveyMessage(newSurveyFileSet);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      相关资源
      最近更新 更多