У меня есть служба, которая открывает несколько наблюдателей для просмотра нескольких папок.После просмотра папок в течение определенного времени я получаю «Достигнут предел сетевой команды bios».
Когда я читаю на здесь , это вызвано наличием более долгосрочных запросов, чемразрешено.
Я полагаю, это происходит из-за приведенного ниже кода обработки ошибок, который вызывается событием ошибки наблюдателей.Это запускает новый экземпляр наблюдателя, снова вызывая метод WatchFile.Я полагаю, что это приводит к тому, что старый ныне несуществующий наблюдатель работает и запускает новый наблюдатель, но я боюсь, что остановка наблюдателя либо предотвратит его повторный запуск, либо остановит все экземпляры, основанные на наблюдателе.
Или янеправильно и зависит ли ошибка от количества изменений?Это может привести к тому, что 100 файлов будут вставлены одновременно, чтобы вызвать эту ошибку.
Я думал об остановке и запуске службы всякий раз, когда я запускаю эту ошибку, но это не решило бы саму проблему, а просто скрыло ее,Есть ли лучшее решение для этого?
private static void watcherError(String directory, Boolean intray, ErrorEventArgs e, FileSystemWatcher watcher)
{
Exception watchException = e.GetException();
EventLog.WriteEntry("WhiteFileMover", String.Concat("error gedetecteerd, watcher werd herstart - ", watchException.Message), EventLogEntryType.Information);
watcher = new FileSystemWatcher();
while (!watcher.EnableRaisingEvents)
{
try
{
// This will throw an error at the
// watcher.NotifyFilter line if it can't get the path.
WatchFile(directory, intray);
}
catch(Exception exp)
{
// Sleep for a bit; otherwise, it takes a bit of
// processor time
EventLog.WriteEntry("WhiteFileMover", String.Concat("Failed to restart watcher, retrying in 5 seconds - ", exp.Message), EventLogEntryType.Warning);
System.Threading.Thread.Sleep(5000);
}
}
}