文件系统观察器 OnChanged 和 OnCreated 事件为单个文件被多次调用。
File System Watcher OnChanged and OnCreated event gets called multiple times for a single file.
这是我的代码:
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 方法都会被触发多次。谁能告诉我哪里出错了?
在您的事件处理程序中,检查所引发事件的 ChangeType 属性。有许多不同的更改类型,可以调用其中的几种,具体取决于文件系统中发生的情况。
https://msdn.microsoft.com/en-us/library/t6xf43e0%28v=vs.110%29.aspx
您可能只想处理某些更改类型。因此,只需确保其中的逻辑仅处理您希望管理的所需变更类型。您可能不需要处理到目前为止指定的那么多事件。
这是我的代码:
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 方法都会被触发多次。谁能告诉我哪里出错了?
在您的事件处理程序中,检查所引发事件的 ChangeType 属性。有许多不同的更改类型,可以调用其中的几种,具体取决于文件系统中发生的情况。
https://msdn.microsoft.com/en-us/library/t6xf43e0%28v=vs.110%29.aspx
您可能只想处理某些更改类型。因此,只需确保其中的逻辑仅处理您希望管理的所需变更类型。您可能不需要处理到目前为止指定的那么多事件。