Почему изменения атрибутов 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).

Ответы на вопрос(5)

Ваш ответ на вопрос