【发布时间】:2012-07-03 14:42:28
【问题描述】:
我在我的 C# 应用程序(在 Windows 上运行)上使用了 FileSystemWatcher,以便在我的应用程序中更新我当前正在浏览的文件。
当我浏览本地目录时效果很好。当文件被重命名、删除或添加时,我会收到通知。
但是例如,当我第一次重命名网络驱动器上的文件时,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");
}
【问题讨论】:
-
你提到了 linux,你的意思是你的客户端代码也运行在 linux 上(即 Mono)还是仅仅在 Samba 共享的服务器上运行?
-
没有客户端在Windows上运行,服务器在Linux上运行(Ubuntu Server 10.04)
-
并添加...您确定您有正确的共享权限来执行这些操作吗? filesystemwatcher 需要此处列出的权限msdn.microsoft.com/en-us/library/aa365465%28v=vs.85%29.aspx
标签: c# linux filesystemwatcher samba