Eu tentei perguntar esta pergunta
Eu tenho o aplicativo baseado no .NET Framework 3.5 no Windows Server 2008, que está monitorando 22 pastas em um servidor / caminho de rede remoto. Estou usando FileSystemWatcher
e, de vez em quando, recebo uma exceção no log.
System.ComponentModel.Win32Exception: The network BIOS command limit has been reached.
Eu tentei seguir o artigo KB-810886 , mas como meu servidor é o Windows Server 2008, não tenho chaves do registro para MaxCmds
, MaxMpxCT
etc. Já examinei questões relacionadas no Stackoverflow como this one and este , mas nenhum deles parece ter resolvido o problema.
A minha pergunta é:
Existe uma maneira de aumentar o limite de MaxCMDs no Windows Server 2008? e Eu tenho que aumentar o limite no meu servidor que hospeda o Windows Service, ou devo aumentar o limite no servidor de arquivos (que tem todas as pastas).
Aqui estão as coisas que eu tentei no meu código:
Eu tentei aumentar o InternalBufferSize para MAX (64K), mas isso não afeta a exceção.
Eu defini como:
No nível da turma:
FileSystemWatcher fsw;
No método de inicialização
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;
Também estou certificando-me de que eu descarte o objeto FileSystemWatcher
em Erro ou em parar o serviço. Como
if (fsw != null)
fsw.Dispose();
Qualquer ajuda ou orientação para resolver o problema é bem-vinda.