2017-03-16 4 views
1

私はC#でFileSystemWatcherコンストラクタを使用しています。コースの一環として、私はウォッチャーに関心のディレクトリを見るようにしています。私が抱えている問題は、ユーザーイベント(コピー、作成、名前変更)に関係なく、私が取り上げているイベントはChangedイベントだけです。C#:FileSystemWatcherはChangedEventのみを送出します

たとえば、

  1. ウォッチファイル "C:... \デスクトップ\ MattsRequest"

  2. ファイルの作成 "C:... \デスクトップ\ MattsRequest \ Dummy.txt"

  3. 観察だけでonChangedイベントハンドラは、「変更」のFileSystemEventArgとパス引数でトリガーされると、「C:... \デスクトップ\ MattsRequest」でと作成されたどのファイルには言及

私のウォッチャーコードはそうそうです。

  watcher = new FileSystemWatcher(); 
      //watcher.IncludeSubdirectories = true; 
      watcher.InternalBufferSize = 32768 * 2; 
      //Can't use a synchro because I can't find an example of something that 
      //implements ISynchroniz-whatever 
      //watcher.SynchronizingObject = 

      watcher.Path = filePath; 

      watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
            | NotifyFilters.FileName | NotifyFilters.DirectoryName 
            | NotifyFilters.CreationTime; 

      watcher.Changed += OnChanged; //Gets triggered 
      watcher.Created += OnCreated; //Never triggered 
      watcher.Deleted += OnDeleted; 
      watcher.Renamed += OnRenamed; //Never triggered 
      watcher.Error += WatcherOnError; //Never triggered 

      // Begin watching. 
      watcher.EnableRaisingEvents = true; 

以下は、監視対象のディレクトリに新しいファイルを作成したときのイメージと、発生したイベントです。それはもちろんChanged型のものですが、作成されたファイルは教えてくれません。

enter image description here

すべてのヘルプは大歓迎です。

+2

ほとんどの場合、トップレベルのディレクトリを監視します。例えば、 "Desktop \ MattsRequest"と見るが、サブディレクトリ "Desktop \ MattsRequest \ MattsRequest \ Dummy.txt"にファイルを作成する。 – Evk

+0

サブディレクトリの変更を追跡する場合は、 'watcher.IncludeSubdirectories = true; 'を設定してください。 – Evk

+0

@Evk Hello Evk。あなたは問題が何であるか正確に正確でした。私はそれに緑色のチェックを与えることができるようにあなたのコメントを返信してもらえますか? –

答えて

2

これは、ディレクトリを監視し、そのディレクトリのサブディレクトリ内にファイルを作成したときに発生する可能性があります。これは、ディレクトリにファイルを作成すると、そのディレクトリのタイムスタンプが変更され、表示されるイベント(ディレクトリの変更)が変更されるためです。

サブディレクトリを監視するか、サブディレクトリを含めるようにwatcher.IncludeSubdirectories = true;を設定します。

0

Evkの答えは正しいものでした。私は祖父母のフォルダだけを見ていて、そのフォルダは情報を失っていたイベントを発しました。ウォッチャーを親フォルダに追加すると、作成されたイベントやその他のイベントが正しく発生しました。

+1

彼の答えに間違いはないと思いますか? –

関連する問題