내 응용 프로그램에서 현재 탐색중인 파일을 업데이트하기 위해 Windows에서 실행중인 C# 응용 프로그램에 FileSystemWatcher
을 사용하고 있습니다. 로컬 디렉토리를 탐색 할 때 제대로 작동합니다. 파일 이름이 변경되거나 삭제되거나 추가 될 때 알림을받습니다.FileSystemWatcher with Linux with Samba
: 처음으로 드라이브 나 네트워크에있는 파일의 이름을 변경하는 경우 예를 들어 는 단, 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");
}
당신은 당신의 클라이언트 코드가 리눅스 (예 : 모노) 또는 삼바 공유가있는 서버에서도 실행되고 있다는 것을 의미합니까? –
클라이언트가 Windows 및 Linux (Ubuntu Server 10.04) – Akhilleus
의 서버에서 실행되지 않습니다. 추가하려면 ... 해당 작업을 수행하기 위해 올바른 privalages를 공유에 설정 했습니까? 파일 시스템 워처에는 여기에 설명 된 사용 권한이 필요합니다. http://msdn.microsoft.com/en-us/library/aa365465%28v=vs.85%29.aspx – Nico