FileSystemWatcher 异常 - 已达到网络 BIOS 命令限制

FileSystemWatcher 异常 - 已达到网络 BIOS 命令限制

我试过问这个问题在 Stackoverflow 上,考虑到它与编程有关,但看起来它更多的是服务器问题。

我在 Windows Server 2008 上有一个基于 .Net Framework 3.5 的应用程序,它正在监视远程服务器/网络路径上的 22 个文件夹。我正在使用,FileSystemWatcher时不时会在日志中收到异常。

System.ComponentModel.Win32Exception:已达到网络 BIOS 命令限制。

我曾尝试过文章 KB-810886,但由于我的服务器是 Windows Server 2008,我没有注册表项等MaxCmdsMaxMpxCT我已经在 Stackoverflow 上查看了相关问题,例如这个这个,但似乎都没有解决这个问题。

我的问题是:

有没有办法增加 Windows Server 2008 中 MaxCMDs 的限制?我是否必须增加托管 Windows 服务的服务器的限制,或者是否应该增加文件服务器(包含所有文件夹)的限制。

以下是我在代码中尝试过的编码内容:

我曾尝试增加内部缓冲区大小到 MAX (64K)但它对异常没有任何影响。

我将其定义如下:

在班级层面:

FileSystemWatcher fsw;

在初始化方法中

fsw = new FileSystemWatcher("FolderUNC");
fsw.IncludeSubdirectories = false;
//m_fsw.InternalBufferSize = 65536; -- Commented out to default 8K
fsw.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.Size;
fsw.Renamed += new RenamedEventHandler(OnChanged);
fsw.Deleted += new FileSystemEventHandler(OnChanged);
fsw.Changed += new FileSystemEventHandler(OnChanged);
fsw.Created += new FileSystemEventHandler(OnChanged);
fsw.Error += new ErrorEventHandler(OnFileSystemWatcherError);
fsw.EnableRaisingEvents = true;   

我还确保FileSystemWatcher在发生错误或停止服务时处置该对象。例如

if (fsw != null)
    fsw.Dispose();

任何有助于解决该问题的帮助或指导都将不胜感激。

相关内容