FileSystemWatcher - tylko jedno zdarzenie zmiany raz uruchomione?
Używam poniższego kodu do nasłuchiwania zdarzeń zmian w pliku, który pobieram z serwera i otwieram. jednak zdarzenie zmiany jest uruchamiane tylko przy pierwszym zapisaniu pliku, a następnie w kolejnych zapisach obserwator plików nie uruchamia zdarzeń zmiany?
Czy ktoś może zobaczyć, co się dzieje?
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);
}
EDYCJA: Plik StartWatchingFile () zwraca teraz filewatcher, który jest przechowywany w klasie, która nie będzie zbierana bezużyteczna, tylko po to, aby upewnić się, że trzymam całą klasę, jak można sądzić, że funkcja fw_changed () nie może być wywołana. Cała klasa nie pobiera teraz śmieci. Klasa odbywa się w tablicy ArrayList, która jest członkiem publicznym klasy
Pozdrowienia,
Jon