文件系统观察器OnChanged和OnCreated事件被多次调用一个文件。

时间:2016-03-01 15:38:20

标签: c# asp.net winforms filesystemwatcher

这是我的代码:

m_Watcher.Filter = "*.*";
                    m_Watcher.Path = settings.FolderName;
                    m_Watcher.IncludeSubdirectories = true;
                    m_Watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
                    m_Watcher.Changed += new FileSystemEventHandler(OnChanged);
                    m_Watcher.Created += new FileSystemEventHandler(OnCreated);
                    //m_Watcher.Deleted += new FileSystemEventHandler(OnChanged);
                    m_Watcher.Renamed += new RenamedEventHandler(OnRenamed);
                    m_Watcher.EnableRaisingEvents = true;

每当我将文件或文件夹复制到正在观看的文件夹时,OnCreated和OnChanged方法会被多次触发。谁能告诉我哪里出错了?

1 个答案:

答案 0 :(得分:1)

在事件处理程序中,检查引发事件的ChangeType属性。根据文件系统中发生的情况,可以调用多种不同的更改类型,可以调用多种类型。

https://msdn.microsoft.com/en-us/library/t6xf43e0%28v=vs.110%29.aspx

您可能只希望处理某些更改类型。因此,只需要确保其中的逻辑只处理您希望管理的所需更改类型。您可能不需要处理到目前为止已经指定的许多事件。