Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在使用FileSystemWatcher时忽略文件及其在修改/更改文件夹时触发的事件';她在吗?_C# - Fatal编程技术网

C# 如何在使用FileSystemWatcher时忽略文件及其在修改/更改文件夹时触发的事件';她在吗?

C# 如何在使用FileSystemWatcher时忽略文件及其在修改/更改文件夹时触发的事件';她在吗?,c#,C#,我正在尝试使用FileSystemWatcher监视特定的子目录,并将事件记录到文件中。我可以忽略文件更改,但无法忽略它所在文件夹通知的更改。因此,我陷入了一个无限循环的文件夹中,它正在被更改,记录到文件中,文件夹被更改,它记录了更改,等等。有没有一种方法可以在不完全忽略文件所在的文件夹的情况下停止此操作?我无法区分不同文件对文件夹所做的更改和用于记录更改的文件。例如,如果我有一个名为“Stuff”的文件夹和文件“log.txt”和“work.txt”,如果我修改了“work.txt”,那么我将

我正在尝试使用FileSystemWatcher监视特定的子目录,并将事件记录到文件中。我可以忽略文件更改,但无法忽略它所在文件夹通知的更改。因此,我陷入了一个无限循环的文件夹中,它正在被更改,记录到文件中,文件夹被更改,它记录了更改,等等。有没有一种方法可以在不完全忽略文件所在的文件夹的情况下停止此操作?我无法区分不同文件对文件夹所做的更改和用于记录更改的文件。例如,如果我有一个名为“Stuff”的文件夹和文件“log.txt”和“work.txt”,如果我修改了“work.txt”,那么我将收到一个通知,通知“work.txt”已更改,“Stuff”已更改,“log.txt”将修改“Stuff”哪些将被记录等等。

您是否也可以发布您已经编写的代码?因此,您正在登录到FileSystemWatcher正在监视的文件夹中的一个文件,并且每次写入日志条目时,它都会触发FSW引发事件?当然,最简单的方法是将日志文件保存在文件夹之外?第二个最简单的事情(假设FSW过滤器是包含的)是排除与日志文件本身相关的任何事件,以及与日志文件目录相关的任何事件…我必须能够监视任何目录。所以路径是由用户给定的,这不是我简单地移动文件的问题。为什么您不能区分日志文件中的更改和其他文件中的更改?使用
OnChanged
处理程序获得的
FileSystemEventArgs
包含触发事件的文件名。修改文件夹中的文件只会触发一个事件,而不是一个针对文件和一个针对文件夹的事件。因为它也会更改其所在的文件夹,所以它不会说明文件夹更改是从日志文件还是其他文件/子目录进行的。如果我更改了文件,则会发出通知,说明该文件及其所在的文件夹已更改。如果我更新日志文件,则会触发一个更改通知,通知它所在的文件夹已被触发、已被记录、已更改它所在的文件夹等。我无法区分是哪些文件导致了文件夹更改通知,尤其是在一次发生多个更改的情况下。