FileSystemWatcher mit Samba unter Linux

Ich benutze eineFileSystemWatcher in meiner C # -Anwendung (läuft unter Windows), um die Dateien, die ich gerade durchsuche, in meiner App zu aktualisieren. Es funktioniert gut, wenn ich ein lokales Verzeichnis durchsuche. Ich werde benachrichtigt, wenn eine Datei umbenannt, gelöscht oder hinzugefügt wird. Aber zum Beispiel, wenn ich eine Datei auf dem Netzlaufwerk zum ersten Mal umbenenne, dieFileSystemWatcher benachrichtigt mich über eine Umbenennungsaktion und wenn ich dieselbe Datei oder eine andere Datei umbenenne, wird dieFileSystemWatcher benachrichtigt mich über einen Fehler:

the specified server cannot perform the requested operation.

Dann benachrichtigt mich der FileSystemWatcher über nichts.

Manchmal kann ich zweimal umbenennen, bevor der FileSystemWatcher mir nichts mitteilt ...

Hier ist mein Testcode:

    static void Main(string[] args)
    {
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = @"N:\prive\defFolder";

        watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;

        watcher.Changed += new FileSystemEventHandler(watcher_Changed);
        watcher.Created += new FileSystemEventHandler(watcher_Changed);
        watcher.Deleted += new FileSystemEventHandler(watcher_Changed);
        watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
        watcher.Error += new ErrorEventHandler(watcher_Error);

        watcher.EnableRaisingEvents = true;

        Console.Read();
        watcher.Dispose();
    }

    static void watcher_Error(object sender, ErrorEventArgs e)
    {
        Console.WriteLine("error : " + e.GetException().Message);
    }

    static void watcher_Renamed(object sender, RenamedEventArgs e)
    {
        Console.WriteLine("rename success");
    }

    static void watcher_Changed(object sender, FileSystemEventArgs e)
    {
        Console.WriteLine("change success");
    }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage