2009-08-13 53 views
0

我在Windows服务器上使用.NET FileSystemWatcher观察Windows服务器上的文件夹。 我也可以使用Samba从Linux服务器访问相同的文件夹。 如果我将文件从观察文件夹复制到其他地方,则会为源文件生成更改事件。 这种行为是否正确?它似乎改变了文件上的'上次访问'时间。我怎样才能忽略这种改变?Samba不正确的FileSystemWatcher行为

+0

FileSystemWatcher是否在Windows盒子或Linux Box上运行在Samba共享上? (你的标题听起来像Samba问题,但问题不匹配)。 – 2009-08-13 17:05:38

+0

是的,在Windows上。 Windows复制命令不具有相同的效果。 – Liam 2009-08-13 17:13:41

回答

1

“上次访问”时间由Windows程序设置不一致:例如,显示Windows中的文件属性上下文菜单将在这次重置。如您所述,Windows复制不会设置“上次访问”时间,但使用Samba的Windows服务器上的文件副本可以做到,因为它是Samba的内部驱动程序。

你唯一的解决办法,总归是你的FileSystemWatcher的使用过滤器忽略“上次访问”时间:

FileSystemWatcher watcher = new FileSystemWatcher(); 
watcher.Path = "c:\yourpathhere"; 
watcher.NotifyFilter = NotifyFilters.LastWrite 
    | NotifyFilters.FileName | NotifyFilters.DirectoryName; 

或相似。