当从不同的计算机进行更改时,C# FileSystemWatcher 不会在 Nas 文件系统上触发
C# FileSystemWatcher not firing on Nas file system when making change from different computer
我让多台计算机(centos)安装了一个 NAS 文件系统(Apsara 文件存储)。
然后我使用 c# FileSystemWatcher 来监视文件 create/update 更改。
FileSystemWatcher 事件仅在运行程序本身的计算机进行更改时触发。
ps。我试过.netcore3.1和.net5版本。
这是我的设置。
...
using var watcher = new FileSystemWatcher(dir);
watcher.NotifyFilter = NotifyFilters.Attributes
| NotifyFilters.CreationTime
| NotifyFilters.DirectoryName
| NotifyFilters.FileName;
watcher.Created += OnCreated;
watcher.Deleted += OnDeleted;
watcher.Filter = "*.log";
watcher.IncludeSubdirectories = true;
watcher.InternalBufferSize = 8192 * 8;
watcher.EnableRaisingEvents = true;
....
这个站点上有很多讨论 FileSystemWatcher 可靠性的问题,结论总是一样的:它不可靠。
- How reliable is the FileSystemWatcher in .netFramwork 4?
- FileSystemWatcher vs polling to watch for file changes
- FileSystemWatcher events raising twice despite taking measures against it
- Why are FileSystemWatcher Attribute changes detected on Windows 7 but not Windows 8?
- 而且这个清单还在继续……
Peter Meinl 的文章 Tamed FileSystemWatcher 非常详细地描述了这些限制,并提供了更可靠的解决方案。
我让多台计算机(centos)安装了一个 NAS 文件系统(Apsara 文件存储)。 然后我使用 c# FileSystemWatcher 来监视文件 create/update 更改。 FileSystemWatcher 事件仅在运行程序本身的计算机进行更改时触发。 ps。我试过.netcore3.1和.net5版本。
这是我的设置。
...
using var watcher = new FileSystemWatcher(dir);
watcher.NotifyFilter = NotifyFilters.Attributes
| NotifyFilters.CreationTime
| NotifyFilters.DirectoryName
| NotifyFilters.FileName;
watcher.Created += OnCreated;
watcher.Deleted += OnDeleted;
watcher.Filter = "*.log";
watcher.IncludeSubdirectories = true;
watcher.InternalBufferSize = 8192 * 8;
watcher.EnableRaisingEvents = true;
....
这个站点上有很多讨论 FileSystemWatcher 可靠性的问题,结论总是一样的:它不可靠。
- How reliable is the FileSystemWatcher in .netFramwork 4?
- FileSystemWatcher vs polling to watch for file changes
- FileSystemWatcher events raising twice despite taking measures against it
- Why are FileSystemWatcher Attribute changes detected on Windows 7 but not Windows 8?
- 而且这个清单还在继续……
Peter Meinl 的文章 Tamed FileSystemWatcher 非常详细地描述了这些限制,并提供了更可靠的解决方案。