【问题标题】:C#: FileSystemWatcher only dispatches ChangedEventC#:FileSystemWatcher 仅调度 ChangedEvent
【发布时间】:2017-03-16 20:08:26
【问题描述】:

我正在使用 C# 中的 FileSystemWatcher 构造。作为课程的标准,我让我的观察者只看感兴趣的目录。我遇到的问题是,无论用户事件(复制、创建、重命名)如何,我选择的唯一事件是 Changed 事件。

例如。

  1. 观看文件“C:...\Desktop\MattsRequest”

  2. 创建文件“C:...\Desktop\MattsRequest\Dummy.txt”

  3. 观察到只有 OnChanged 处理程序被“Changed”的 FileSystemEventArg 触发,路径 arg 是“C:...\Desktop\MattsRequest”没有提及创建了什么文件强>

我的观察者代码如下所示。

            watcher = new FileSystemWatcher();
            //watcher.IncludeSubdirectories = true;
            watcher.InternalBufferSize = 32768 * 2;
            //Can't use a synchro because I can't find an example of something that
            //implements ISynchroniz-whatever
            //watcher.SynchronizingObject =

            watcher.Path = filePath;

            watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                                    | NotifyFilters.FileName | NotifyFilters.DirectoryName
                                    | NotifyFilters.CreationTime;

            watcher.Changed += OnChanged;  //Gets triggered
            watcher.Created += OnCreated;  //Never triggered
            watcher.Deleted += OnDeleted;
            watcher.Renamed += OnRenamed;  //Never triggered
            watcher.Error += WatcherOnError; //Never triggered

            // Begin watching.
            watcher.EnableRaisingEvents = true;

下面是我在监视目录中创建新文件时的图像,以及它触发的事件。它当然是 Changed 类型,但它不会告诉我创建了哪个文件。

非常感谢任何帮助。

【问题讨论】:

  • 您很可能会观看顶级目录。例如,您观看“Desktop\MattsRequest”,但在子目录“Desktop\MattsRequest\MattsRequest\Dummy.txt”中创建文件。
  • 如果你也想跟踪子目录的变化 - 设置watcher.IncludeSubdirectories = true;
  • @Evk 你好,Evk。你是完全正确的问题是什么。您介意回复您的评论,以便我给它一个绿色检查吗?

标签: c# .net filesystemwatcher


【解决方案1】:

当您查看目录并在该目录的子目录中创建文件时,可能会发生这种情况。这是因为在目录中创建文件会更改该目录的时间戳,这就是您看到的事件(目录更改)。

修复 - 观察子目录本身,或设置 watcher.IncludeSubdirectories = true; 以包含子目录。

【讨论】:

    【解决方案2】:

    Evk 的答案是正确的。我只看祖父母文件夹,该文件夹触发了一个缺少信息的事件。一旦我向父文件夹添加了一个观察者,Created 和其他事件就会正确触发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      相关资源
      最近更新 更多