У нас странная проблема, связанная с 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...
}
}
}
Спасибо, вперед.