FileSystemWatcher с Samba в Linux

Я использую FileSystemWatcherв своем приложении C #(, работающем в Windows ), чтобы обновлять в своем приложении файлы, которые я сейчас просматриваю. Это хорошо работает, когда я просматриваю локальный каталог. Я получаю уведомления, когда файл переименовывается, удаляется или добавляется. Но, например, когда я переименовываю файл на сетевом диске в первый раз, FileSystemWatcherуведомляет меня о действии переименования, а затем, когда я переименовываю тот же или другой файл, FileSystemWatcherуведомляет меня об ошибке:

the specified server cannot perform the requested operation.

Тогда FileSystemWatcher ни о чем меня не уведомит.

Иногда я могу дважды переименовать, прежде чем FileSystemWatcher ничего не уведомит меня...

Вот мой тестовый код:

    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");
    }
5
задан Akhilleus 3 July 2012 в 07:35
поделиться