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");
}