两次引发FileSystemWatcher更改事件我有一个应用程序,我在其中查找文本文件,如果对该文件进行了任何更改,则使用OnChanged更好地处理这件事。我正在使用NotifyFilters.LastWriteTime但这件事还是被炒了两次。这是密码。public void Initialize(){
FileSystemWatcher _fileWatcher = new FileSystemWatcher();
_fileWatcher.Path = "C:\\Folder";
_fileWatcher.NotifyFilter = NotifyFilters.LastWrite;
_fileWatcher.Filter = "Version.txt";
_fileWatcher.Changed += new FileSystemEventHandler(OnChanged);
_fileWatcher.EnableRaisingEvents = true;}private void OnChanged(object source, FileSystemEventArgs e){
.......}就我而言OnChanged被调用两次,当我更改文本文件时。version.txt保存它。
3 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
OnChanged
FileSystemWatcher
File.GetLastWriteTime
DateTime lastRead = DateTime.MinValue;void OnChanged(object source, FileSystemEventArgs a){ DateTime lastWriteTime = File.GetLastWriteTime(uri); if (lastWriteTime != lastRead) { doStuff(); lastRead = lastWriteTime; } // else discard the (duplicated) OnChanged event}
慕妹3146593
TA贡献1820条经验 获得超9个赞
FileSystemWatcher
您可能会注意到,在某些情况下,单个创建事件生成由组件处理的多个创建事件。例如,如果使用FileSystemWatcher组件监视目录中新文件的创建,然后使用记事本创建文件进行测试,则可能会看到两个已创建的事件生成,即使只创建了一个文件。这是因为记事本在写入过程中执行多个文件系统操作。记事本以批方式写入磁盘,从而创建文件的内容,然后创建文件属性。其他应用程序可以相同的方式执行。因为FileSystemWatcher监视操作系统活动,因此将捕获这些应用程序触发的所有事件。
Created
NotifyFilter
哈士奇WWW
TA贡献1799条经验 获得超6个赞
// fsw_ is the FileSystemWatcher instance used by my application.private void OnDirectoryChanged(...){ try { fsw_.EnableRaisingEvents = false; /* do my stuff once asynchronously */ } finally { fsw_.EnableRaisingEvents = true; }}
- 3 回答
- 0 关注
- 759 浏览
添加回答
举报
0/150
提交
取消