4

当受监视目录中文件的 ReadOnly 属性发生更改时,FileSystemMonitor 似乎没有触发“已更改”事件(也没有其他事件)。

这是我的测试代码:

    using System;
    using System.IO;

    namespace FSM
    {
        class Program
        {
            static FileSystemWatcher FolderMonitor;


            static void Main(string[] args)
            {
            FolderMonitor = new FileSystemWatcher("C:\\MyImages");
            FolderMonitor.IncludeSubdirectories = false;
            FolderMonitor.Changed += FolderMonitor_Changed; ;
            FolderMonitor.EnableRaisingEvents = true;

            Console.WriteLine("Hit any key to terminate .....");
            Console.ReadKey(true);
        }


        private static void FolderMonitor_Changed(object sender, FileSystemEventArgs e)
        {
            Console.WriteLine("****  \"" + e.Name + "\" changed.");
        }
    }

使用该代码,我会收到很多“已更改”事件,例如,如果修改时间戳已更改,但如果我更改任何标准属性(如 ReadOnly 或 Hidden)则不会。

我错过了什么,还是我击中了“功能”?

4

1 回答 1

5

您需要设置该NotifyFilter属性,因为这决定了要监视的更改类型。请参阅FileSystemWatcher.NotifyFilter 属性

例如

FolderMonitor.NotifyFilter = NotifyFilters.Attributes;
于 2016-12-22T12:01:06.930 回答