2016-12-22 8 views
4

監視対象ディレクトリ内のファイルのReadOnly属性が変更された場合、FileSystemMonitorは「変更済み」イベントを発生させないように見えます(他のイベントは発生しません)。FileSystemWatcher - ReadOnly属性の変更イベント

これは私のテストコードです:そのコード付き

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のような標準属性を変更していない場合

何かが見つからない、または「機能」にヒットしましたか?

+0

と思われます。ドキュメントは、「変更されたイベント、**システム属性**、最後の書き込み時間、最後のアクセス時間、または監視されているディレクトリ内のファイルまたはディレクトリのセキュリティ権限が変更されたときに変更されたイベントが発生しました」_ – stuartd

答えて

4

これは、監視対象の変更の種類を決定するため、NotifyFilterプロパティを設定する必要があります。 FileSystemWatcher.NotifyFilter Property

などを参照してください。

FolderMonitor.NotifyFilter = NotifyFilters.Attributes; 
+1

はい、確かに、私はNotifyFilterプロパティを設定していませんでした。私は私のコードに次の行を追加しました: FolderMonitor.NotifyFilter = NotifyFilters.Attributes \t \t \t \t | NotifyFilters.DirectoryName | NotifyFilters.FileName \t \t \t \t | NotifyFilters.LastWrite | NotifyFilters.Security; これは完璧に機能します! 私の問題は、Changedイベントが私のために働いているように思えたことです。しかし、NotifyFilterのデフォルト設定が私の仕事には不十分だったからです。 ありがとうございました! – PaulTheHacker

関連する問題