FileSystemWatcher com o Samba no Linux
Estou usando umFileSystemWatcher
no meu aplicativo c # (em execução no Windows), a fim de atualizar no meu aplicativo os arquivos que estou navegando no momento. Funciona bem quando eu navego em um diretório local. Sou notificado quando um arquivo é renomeado, excluído ou adicionado. Mas, por exemplo, quando eu renomeio um arquivo na unidade de rede pela primeira vez,FileSystemWatcher
me notifica sobre uma ação de renomeação e, quando renomeio o mesmo arquivo ou outro arquivo,FileSystemWatcher
me notifica de um erro:
the specified server cannot perform the requested operation
.
Então o FileSystemWatcher não me avisa sobre nada.
Às vezes eu posso renomear duas vezes antes que o FileSystemWatcher não me notifique nada ...
Aqui está o meu código de teste:
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");
}