FileSystemWatcher - 只读属性的更改事件
FileSystemWatcher - Changed Event for ReadOnly Attribute
当受监视目录中文件的 ReadOnly 属性更改时,FileSystemMonitor 似乎没有触发 'Changed' 事件(也没有其他事件)。
这是我的测试代码:
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.");
}
}
使用该代码,我收到了很多 'Changed' 事件,例如如果修改时间戳已更改,但如果我正在更改任何标准属性(如 ReadOnly 或 Hidden)则不会。
我是不是遗漏了什么,或者我是否点击了 "feature"?
您需要设置 NotifyFilter
属性,因为这决定了要监视的更改类型。参见 FileSystemWatcher.NotifyFilter Property
例如
FolderMonitor.NotifyFilter = NotifyFilters.Attributes;
当受监视目录中文件的 ReadOnly 属性更改时,FileSystemMonitor 似乎没有触发 'Changed' 事件(也没有其他事件)。
这是我的测试代码:
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.");
}
}
使用该代码,我收到了很多 'Changed' 事件,例如如果修改时间戳已更改,但如果我正在更改任何标准属性(如 ReadOnly 或 Hidden)则不会。
我是不是遗漏了什么,或者我是否点击了 "feature"?
您需要设置 NotifyFilter
属性,因为这决定了要监视的更改类型。参见 FileSystemWatcher.NotifyFilter Property
例如
FolderMonitor.NotifyFilter = NotifyFilters.Attributes;