如果这是一个重复的问题,我将开始道歉。有大量的FileSystemWatcher问题,但我没有看到任何解决我的问题。
好的,所以我在C#中有一个监控目录的控制台应用程序,我们称之为Root
。 Root
有很多子文件夹。此应用程序的目的是在Root
或其任何子文件夹中创建,修改或删除任何.csv文件时写入日志文件。我目前有这个工作正常,有点。唯一的问题是,当创建,修改或删除.csv文件时,它实际上会为所有3提升事件。
例如,如果我在名为Root
的{{1}}中创建文件,则日志文件将如下所示:
test.csv
我不知道最近会发生什么,所以这里是设置 10/04/2012: File F:/Root/test.csv Created
10/04/2012: File F:/Root/test.csv Changed
10/04/2012: File F:/Root/test.csv Created
10/04/2012: File F:/Root/test.csv Deleted
FileSystemWatcher
这是我的OnChanged事件(重命名是相同但有不同的参数)
_watchFolder.Path = ConfigurationManager.AppSettings["RootToWatch"];
_watchFolder.Filter = ConfigurationManager.AppSettings["FileNameToWatch"];
_watchFolder.NotifyFilter = NotifyFilters.FileName
| NotifyFilters.LastWrite;
_watchFolder.IncludeSubdirectories = true;
_watchFolder.Changed += new FileSystemEventHandler(OnChanged);
_watchFolder.Created += new FileSystemEventHandler(OnChanged);
_watchFolder.Deleted += new FileSystemEventHandler(OnChanged);
_watchFolder.Renamed += new RenamedEventHandler(OnRenamed);
try
{
_watchFolder.EnableRaisingEvents = true;
}
catch (ArgumentException ex)
{
AbortMonitoring(ex.Message);
}
答案 0 :(得分:0)
只为changed
事件添加处理程序。它应该收集所有更改类型。如果您希望仅在特定更改类型上引发事件,则会出现其他类型的事件,例如created
。
watchFolder.IncludeSubdirectories = true;
_watchFolder.Changed += new FileSystemEventHandler(OnChanged);