3

FileSystemウォッチャーを作成し、2つのイベントを登録しました。1つは作成用で、もう1つは変更用です。

FileSystemWatcher fswInbound = new FileSystemWatcher();
fswInbound.Path = "path to directory";
fswInbound.EnableRaisingEvents = true;
fswInbound.InternalBufferSize = 12288;
fswInbound.Created += new FileSystemEventHandler(program.FileSystemWatcher_Created);
fswInbound.Changed += new FileSystemEventHandler(program.FileSystemWatcher_Created);

同じプログラムよりも動的にファイルを作成し、FileSystemWatcherがリッスンしているフォルダーに書き込もうとしています。

using (StreamWriter outfile = new StreamWriter(filename))
{
      outfile.Write("Some really long string");
}

新しいファイルが作成された後。2つのイベントが発生しています。1つは変更用で、もう1つは作成用です。ファイル作成のイベントのみをトリガーしたい。初めてファイルを作成するときにファイル変更イベントを回避するにはどうすればよいですか?

4

1 に答える 1

1

これはMSDNによる設計によるものです。これを回避するには、あなたが持っているように見える共通のイベントハンドラーを用意します。次に、FileSystemEventArgsをチェックして、ファイルの作成または変更のChangeTypeをチェックします。

上記のリンクから:

OnCreatedイベントは、ファイルが作成されるとすぐに発生します。ファイルが監視対象ディレクトリにコピーまたは転送されている場合、OnCreatedイベントがすぐに発生し、その後に1つ以上のOnChangedイベントが発生します。

于 2012-07-14T04:41:21.257 に答える