以下のコードを使用して、サーバーからダウンロードして開くファイルの変更イベントを待ち受けます。しかし、変更イベントは、ファイルが初めて保存されたときにのみ起動され、その後の保存でファイルウォッチャーは変更イベントを起動しません。FileSystemWatcher - 一度起動すると変更イベントのみが表示されますか?
誰でも何が起こっているのを見ることができますか?
private FileSystemWatcher StartWatchingFile()
{
fw = new FileSystemWatcher();
fw.Path = this.directoryLocation;
fw.Filter = this.Filename;
fw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite;
// Add event handler
fw.Changed += new FileSystemEventHandler(fw_Changed);
// Open file
System.Diagnostics.Process.Start(this.CreateAbsoluteFilePath(this.Filename));
// Begin watching.
fw.EnableRaisingEvents = true;
return fw;
}
//************************
void fw_Changed(object sender, FileSystemEventArgs e)
{
MessageBox.Show("File: " + e.FullPath + " " + e.ChangeType);
}
EDIT:StartWatchingFileは()今だけfw_changed()関数ではないかもしれないと思って、私はクラス全体を保持してることを確認するために、ゴミが収集されることはありませんクラスに保たれているfilewatcherを返します。呼び出すことができる。クラス全体でガベージコレクションが行われていません。クラスは
よろしく、
ジョン
あなたが掲示したコードは、名前変更されたイベントや削除されたイベントを捕まえていません。ファイル名が変更されていないか、削除されていませんか? –
これは正しい – Jon