2011-08-09 7 views
2

私は特定のディレクトリを監視するためにFileSystemWatcherを使用しています。誰かがファイルに編集を保存するときにはイベントを1つ、ファイルを作成または移動するときには別のイベントを発生させる必要があります。FileSystemWatcherの変更イベントと作成イベントを区別しますか?

移動ファイルの監視は、Deletedと作成済みイベントの組み合わせを使用して正常に動作します。誰かがファイルに編集内容を保存すると、Changedイベントが実際に発生します。しかし、ファイルを移動するときにChangedイベントが発生し、それがCreatedとDeletedイベントの処理に干渉します。

基本的に、ユーザーがファイルを移動または作成したときではなく、ユーザーがファイルに編集内容を保存した場合にのみ、Changedイベントを発生させたいと考えています。 、ないChangeTypeCreated(私はそれがChangedイベントやCreatedイベントが実際にあったかどうかをチェックするためにChangeTypeプロパティを使用してみましたが、私の驚きに、ChangeTypeChangedは、移動やファイルを作成してもChangeイベント用に飼育されたはずタイプの1つでなければなりません)。

だから私は、Changeイベントが実際にファイルの編集によってトリガーされていることを確認するのではなく、ファイルの作成または移動する方法がわからない...

任意のアイデア?

答えて

3

これは、あなたがそのようNotifyFilter. AttributesNotifyFilter.LastAccessなどNotificationFilterの一部を適用すると、ファイルの移動が「削除 - 作成された - 変更 - 変更」する場合、両方のフィルタが適用された場合は、それも二回Changedを通知します正常な動作です:だから、

  • 関連する通知フィルタを追加しないでください。 NotifyFilter. AttributesNotifyFilter.LastAccess を削除すると、ファイルを移動するときにはChangedイベントは表示されません。Deletedと表示され、Createdのみとなります。
  • あなたは既に使用されている通知フィルタに固執することを希望している場合は、他のヒントはあなたが汚いソリューションを生成することを可能にするためにここにあり、それは、一連のファイルが移動しているという事実であります通知はDeletedCreatedChangedとなり、常にこの順番になります。
+0

ありがとう、良い洞察力。 NofityFilterを使用するだけで、ファイルが削除されたイベントや作成されたイベントを発生させる前に、変更されたイベントが発生しますが、2つのヒントとタイマーを組み合わせて修正できました。あなたが言ったように、汚いですが、それは動作します:-) – Anders

+0

あなたのためにうれしい –

関連する問題