2011-11-07 14 views
0

filesystemwatcherクラスで動いているファイルイベントに関する質問があります。動いているファイルイベントが特定のファイルに対して発生したときにファイルの移動を止めたり、編集したりすることができます動いている出来事?C#:filesystemwatcher class

答えて

2

いいえ、FileSystemWatcherクラスを使用してファイルの移動や名前の変更を行う方法はありません。

あなたが見た場合、FileSystemWatcherクラスのイベントによって渡されたイベント引数のいずれもCancelプロパティを持っていません。また、クラスが単にウォッチャーと呼ばれるという事実はちょっとしたヒントです。

アクセス制御リストを使用して、誰かがファイルを削除できないようにすることができます(移動は実際はコピー/削除なので)。あるいは、ファイル上のFileStreamを開こうとすると、ロックされている可能性があります。

2

イベントハンドラを使用して操作を直接キャンセルすることはできません。取り消したい変更をプログラムで "元に戻す"には、補償操作を行う必要があります。

1

事実が発生した後でのみ、イベントを受信します。それは単なる通知であり、あなたが承認しなければならないイベントではありません。これは、FileSystemEventArgs(例えば、KeyEventArgsとは対照的に)クラスの欠落しているCancelまたはHandledプロパティから推測することもできます。

あなたが受け取ったRenamedEventArgsOldFullPathプロパティに基づいて、移動を検出してファイルを元に戻そうとすることができます。

しかし、これはユーザーや他のソフトウェアにとって混乱を招く可能性があります。また、イベントを受け取るたびにファイルを前後に移動させる無限ループで終わらないようにしてください。