C# FileSystemWatcher包含不在网络共享上工作的子目录
我正在尝试查看网络共享中的文件夹,其中文件被添加到共享中,以指示上载已完成。我想使用FileSystemWatcher来监视该触发器文件的共享及其子目录,如下所示C# FileSystemWatcher包含不在网络共享上工作的子目录,c#,filesystemwatcher,C#,Filesystemwatcher,我正在尝试查看网络共享中的文件夹,其中文件被添加到共享中,以指示上载已完成。我想使用FileSystemWatcher来监视该触发器文件的共享及其子目录,如下所示 FileSystemWatcher fsw = new FileSystemWatcher(share, triggerFilePattern); fsw.IncludeSubdirectories = true; fsw.Created += new FileSystemEventHandler(OnCreated); fsw.Re
FileSystemWatcher fsw = new FileSystemWatcher(share, triggerFilePattern);
fsw.IncludeSubdirectories = true;
fsw.Created += new FileSystemEventHandler(OnCreated);
fsw.Renamed += new RenamedEventHandler(OnRenamed);
fsw.Error += new ErrorEventHandler(OnError);
如果在共享的根目录下创建文件,则会触发事件。如果在共享的子目录中创建了一个文件,则不会触发该事件,我也不会收到错误
如果我为该子目录创建了一个新的FileSystemWatcher,那么在那里创建文件时,我确实会收到一个事件。但是,与顶级FileSystemWatcher类似,我不会为在任何其他子目录中创建的文件获取事件
如果我将网络共享更改为本地目录以进行测试,它确实可以按预期工作
有什么想法吗?我可以设置一些不可靠的网络共享设置来阻止递归文件系统监视程序检查吗?我可以解决这个问题,但最好不要使代码复杂化
编辑:我看到我在属性->安全选项卡下没有完全控制权,所以我想可能就是这样。但是我能够在具有相同可见权限的不同共享上获得所需的正常行为,所以我又不知道为什么这个特定共享不起作用了
Edit2:在一位同事的建议下,我也添加了一个已更改的处理程序。对于我来说,不需要先创建文件就可以更改文件是没有意义的,但是。。。在子目录中创建文件时,我在相关共享上遇到更改事件。(重命名它们时,我仍然一无所获。)这解决了我眼前的问题,但我将保留问题,以防有人能够回答为什么会发生这种情况。试试这个
private static FileSystemWatcher fw;
static void Main(string[] args)
{
fw = new FileSystemWatcher(@"D:\Folder_Watch");
fw.IncludeSubdirectories = true;
fw.NotifyFilter = NotifyFilters.LastAccess |
NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
fw.Created += fw_Created;
fw.Changed += fw_Created;
fw.Renamed += fw_Created;
fw.Filter = "*.*";
fw.EnableRaisingEvents = true;
new System.Threading.AutoResetEvent(false).WaitOne();
}
static void fw_Created(object sender, FileSystemEventArgs e)
{
try
{
fw.EnableRaisingEvents = false;
//Your Code
}
finally
{
fw.EnableRaisingEvents = true;
}
}
我也遇到了同样的问题,我通过向共享网络文件夹授予写入权限解决了这个问题(到目前为止它只有读取权限)。共享文件夹最初位于Linux上,但我已将其安装在Windows Server 2008 R2上,我正在使用FileSystemWatcher运行程序。子目录的安全权限是否与根目录的安全权限相同?属性->安全选项卡中的可见权限是相同的相同。您是否尝试过设置fsw.EnableRaisingEvents=true?什么是支持操作系统?它是从Windows公开的共享吗?这通常是SMB仿真不好的问题,自DSM 5.2以来,Synology NAS共享最常见。