Windows mobile OpenNETCF.IO.FileSystemWatcher中多次发生的事件
每当我订阅FileSystemWatcher通知时,在创建新文件或更改现有文件时都会发生多个事件。事件按以下顺序发生: 新文件 创造 改变 改变 改变 改变 改变 改变 改变 改变 删除 改变 重命名 改名 删除 删除 重命名和删除按预期工作。多次调用创建和更改Windows mobile OpenNETCF.IO.FileSystemWatcher中多次发生的事件,windows-mobile,compact-framework,filesystemwatcher,opennetcf,Windows Mobile,Compact Framework,Filesystemwatcher,Opennetcf,每当我订阅FileSystemWatcher通知时,在创建新文件或更改现有文件时都会发生多个事件。事件按以下顺序发生: 新文件 创造 改变 改变 改变 改变 改变 改变 改变 改变 删除 改变 重命名 改名 删除 删除 重命名和删除按预期工作。多次调用创建和更改 在添加/更改文件时,是否有任何解决方案/解决方法可以获得准确的通知?如果您查看FSW的SDF源代码,您会发现它实际上是一个非常薄的托管垫片,用于本地SHChangeNotifyRegister调用,dwEventMask设置为SHCNE
在添加/更改文件时,是否有任何解决方案/解决方法可以获得准确的通知?如果您查看FSW的SDF源代码,您会发现它实际上是一个非常薄的托管垫片,用于本地SHChangeNotifyRegister调用,dwEventMask设置为SHCNE_ALLEVENTS。窗口句柄传递给API,API在发生更改时接收回调,这些回调被编组到FSW在托管端公开的托管事件 现在看一下回调,看起来有9个事件ID是句柄,其中四个会引发已更改的事件:
- SHCNE_更新器
- SHCNE_RMDIR
- SHCNE_更新项目
- SHCNE_属性
我认为解决方法是查看事件args,并为快速连续发生的相同文件名“分组”事件。例如,如果同一文件夹中的同一文件名在一秒钟内发生了一系列更改和创建的事件,那么很可能是文件创建。您可以发布事件数据吗?有什么不同吗?对于事件?听起来它与桌面版本的gotcha类似:。根据我的经验,我尽可能避免FSW。捕捉事件并确定在一秒钟内发生的重复事件似乎是一个难题。有没有更好的解决办法?