C#:FileSystemWatcher仅发送Change-devent

C#:FileSystemWatcher仅发送Change-devent,c#,.net,filesystemwatcher,C#,.net,Filesystemwatcher,我正在使用C#中的FileSystemWatcher构造。作为课程的标准,我让我的观察者只关注利益目录。我遇到的问题是,无论用户事件(复制、创建、重命名)如何,我唯一选择的事件就是更改的事件 比如说 监视文件“C:…\Desktop\MattsRequest” 创建文件“C:…\Desktop\MattsRequest\Dummy.txt” 请注意,只有OnChanged处理程序被FileSystemEventArg为“Changed”的文件系统触发,路径arg为“C:…\Desktop\Mat

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

比如说

  • 监视文件“C:…\Desktop\MattsRequest”

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

  • 请注意,只有OnChanged处理程序被FileSystemEventArg为“Changed”的文件系统触发,路径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;
    
    下面是我在监视的目录中创建新文件的时间以及它触发的事件的图像。它的类型当然改变了,但它没有告诉我创建了哪个文件


    非常感谢您的帮助。

    Evk的回答是正确的。我只是在看祖父母文件夹,而那个文件夹引发了一个丢失信息的事件。一旦我向父文件夹添加了一个监视程序,创建的事件和其他事件就被正确触发。

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


    要修复-要么监视子目录本身,要么设置
    watcher.IncludeSubdirectories=true以包含子目录。

    最有可能的情况是您查看顶级目录。例如,您观看“Desktop\MattsRequest”,但在子目录“Desktop\MattsRequest\MattsRequest\Dummy.txt”中创建文件。如果您也想跟踪子目录中的更改,请设置
    watcher.IncludeSubdirectories=true@Evk你好,Evk。你对问题的看法完全正确。你介意把你的评论回复一下吗?这样我就可以给你一张绿色支票了?