我试过问这个问题在 Stackoverflow 上,考虑到它与编程有关,但看起来它更多的是服务器问题。
我在 Windows Server 2008 上有一个基于 .Net Framework 3.5 的应用程序,它正在监视远程服务器/网络路径上的 22 个文件夹。我正在使用,FileSystemWatcher
时不时会在日志中收到异常。
System.ComponentModel.Win32Exception:已达到网络 BIOS 命令限制。
我曾尝试过文章 KB-810886,但由于我的服务器是 Windows Server 2008,我没有注册表项等MaxCmds
。MaxMpxCT
我已经在 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();
任何有助于解决该问题的帮助或指导都将不胜感激。