当从不同的计算机进行更改时,C# FileSystemWatcher 不会在 Nas 文件系统上触发
Posted
技术标签:
【中文标题】当从不同的计算机进行更改时,C# FileSystemWatcher 不会在 Nas 文件系统上触发【英文标题】:C# FileSystemWatcher not firing on Nas file system when making change from different computer 【发布时间】:2021-12-22 19:53:52 【问题描述】:我让多台计算机(centos)安装了一个 NAS 文件系统(Apsara File Storage)。 然后我使用 c# FileSystemWatcher 来监视文件创建/更新更改。 FileSystemWatcher 事件仅在运行程序本身的计算机进行更改时触发。 附言。我试过 .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;
....
【问题讨论】:
documentation 确实说“远程计算机必须安装所需的平台之一,组件才能正常运行。”但未能列出或链接到所需的平台。 【参考方案1】:这个网站上有很多关于 FileSystemWatcher 可靠性的问题,而结论总是一样的:它不可靠。
How reliable is the FileSystemWatcher in .netFramwork 4? FileSystemWatcher vs polling to watch for file changes C# FileSystemWatcher watch changes on network drive which is only done by current system 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 的文章非常详细地描述了这些限制,并提供了更可靠的解决方案。
【讨论】:
以上是关于当从不同的计算机进行更改时,C# FileSystemWatcher 不会在 Nas 文件系统上触发的主要内容,如果未能解决你的问题,请参考以下文章
当从 GeometryReader 中进行更改时,SwiftUI 不会反映对 @Binding @State 变量的更改
当从同一个组件调用时,两个 IBAction 触发的顺序是啥?
当从执行路径更改的表单中触发取消按钮时,组件更改会暂时暂停?