Почему изменения атрибутов FileSystemWatcher обнаруживаются в Windows 7, а не в Windows 8?
У меня есть код, который использует FileSystemWatcher для отслеживания изменений файлов за пределами моего приложения.
В Windows 7 с использованием .NET 4 приведенный ниже код будет определять, когда файл редактировался и сохранялся в приложении, таком как Блокнот, во время работы моего приложения. Тем не менее, эта логика неработать с использованием .NET 4 в Windows 8. В частности, FileSystemWatcher 'Измененное событие никогда не срабатывает.
public static void Main(string[] args)
{
const string FilePath = @"C:\users\craig\desktop\notes.txt";
if (File.Exists(FilePath))
{
Console.WriteLine("Test file exists.");
}
var fsw = new FileSystemWatcher();
fsw.NotifyFilter = NotifyFilters.Attributes;
fsw.Path = Path.GetDirectoryName(FilePath);
fsw.Filter = Path.GetFileName(FilePath);
fsw.Changed += OnFileChanged;
fsw.EnableRaisingEvents = true;
// Block exiting.
Console.ReadLine();
}
private static void OnFileChanged(object sender, FileSystemEventArgs e)
{
if (File.Exists(e.FullPath))
{
Console.WriteLine("File change reported!");
}
}
Я понимаю, что могу изменить NotifyFilter, включив в него также NotifyFilters.LastWrite, который может решить мою проблему. Тем не менее, я хочу понять,почему этот код работал в Windows 7, но теперь не запускает событие Changed в Windows 8, Я'Мне также любопытно узнать, есть лиs способ восстановить поведение Windows 7 FileSystemWatcher при работе в Windows 8 (без изменения NotifyFilter).