FileSystemWatcher
現在閲覧しているファイルをアプリで更新するために、C#アプリケーション(Windowsで実行)でを使用しています。ローカルディレクトリを参照するとうまくいきます。ファイルの名前が変更されたり、削除されたり、追加されたりすると通知されます。ただし、たとえば、ネットワークドライブ上のファイルの名前を初めてFileSystemWatcher
変更すると、名前変更アクションが通知され、同じファイルまたは別のファイルの名前を変更するとFileSystemWatcher
、エラーが通知されます。
the specified server cannot perform the requested operation
。
その後、FileSystemWatcherは何も通知しません。
FileSystemWatcherが何も通知しない前に2回名前を変更できる場合があります...
これが私のテストコードです:
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");
}