Ich verwende den folgenden Code, um auf Änderungsereignisse einer Datei zu warten, die ich von einem Server herunterlade und öffne. Das Änderungsereignis wird jedoch nur ausgelöst, wenn die Datei zum ersten Mal gespeichert wird. Bei nachfolgenden Speichervorgängen löst der Dateiwatcher keine Änderungsereignisse aus.FileSystemWatcher - nur einmal das Änderungsereignis einmal ausgelöst?
Kann jemand sehen, was los ist?
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: Die StartWatchingFile() gibt jetzt die Penguin Computing, die in einer Klasse gehalten wird, die nicht Müll gesammelt werden, nur um sicherzustellen, dass ich die ganze Klasse bin halten als die fw_changed dachte() Funktion möglicherweise nicht in der Lage sein, angerufen zu werden. Die gesamte Klasse wird jetzt nicht mehr mit Garbage Collection behandelt. Die Klasse in einem Arraylist gehalten wird, die ein öffentliches Mitglied einer Klasse ist
Grüße,
Jon
Der Code, den Sie gepostet haben, fängt die umbenannten oder gelöschten Ereignisse nicht ab. Ich nehme an, die Datei wird nicht umbenannt oder gelöscht? –
Das ist korrekt – Jon