Непоследовательное поведение FileSystemWatcher на 64-битных машинах - PullRequest
0 голосов
/ 05 января 2012

У нас странная проблема, связанная с FileSystemWatcher. Мы использовали средство отслеживания файловой системы для отслеживания определенного файла и установили для NotifyFilter значение NotifyFilters.LastWrite. Таким образом, каждый раз, когда было написано заявление в журнале, наблюдатель всегда будет уведомлять в режиме реального времени. Теперь проблема заключается в том, что при использовании в 32-битных машинах FSW отображает операторы журнала из файла в режиме реального времени, но когда мы использовали в 64-битных машинах, для отображения FSW требуется время (он будет отображаться только тогда, когда регистратор закончили запись).

Мы наблюдали, что каждый раз, когда мы обновляем каталог, в котором находится файл журнала на 64-битной машине, FSW отображает инструкцию log, но нам нужно обновлять его всегда, чтобы позволить отображать FSW, в отличие от 32-битных машин. освежение необходимо. Он отображает записи журнала в режиме реального времени ...

Обновлен:

watcher = new FileSystemWatcher(logDirectoryKmna, POLLING_ACTIVITY)
                {
                    NotifyFilter = NotifyFilters.LastWrite
                };

 watcher.Changed += OnFileSystemChangedDeviceDiscovery;
 watcher.EnableRaisingEvents = true;

Код для OnFileSystemChanged:

private void OnFileSystemChangedDeviceDiscovery(object source, FileSystemEventArgs e)
 {
     try
        {               
           if (e.ChangeType == WatcherChangeTypes.Changed)
           {
                 var reader = new StreamReader(_sharedStream);
                 var data = reader.ReadToEnd();
                  //data manipulation...
            }
        }
}

Спасибо, вперед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...