NotifyFilter가 작동하지 않는 Windows 서비스가 있고 (유사한 WinForms 응용 프로그램을 만들어 코드를 확인했습니다.) 해당 코드 줄을 제거하자마자 서비스가 제대로 작동하고 WinForms 응용 프로그램에서 이벤트 처리기가 작동하는 것을 볼 수 있습니다.FileSystemWatcher의 NotifyFilter가 작동하지 않습니다.
내가하고있는 일은 텍스트 파일을 FileSystemWatcher의 입력 디렉토리에 놓아서 watcher_FileChanged
대리자를 시작하는 것입니다. 거기에 _watcher.NotifyFilter = NotifyFilters.CreationTime;
이있을 때 작동하지 않습니다. 내가 꺼내면 잘 작동합니다.
내가이 필터에 문제가 있다면 누구에게 말해 줄 수 있습니까?
다음은 OnStart 이벤트의 FSW 코드입니다.
protected override void OnStart(string[] args)
{
_watcher = new FileSystemWatcher(@"C:\Projects\Data\Test1");
_watcher.Created += new FileSystemEventHandler(watcher_FileChanged);
_watcher.NotifyFilter = NotifyFilters.CreationTime;
_watcher.IncludeSubdirectories = false;
_watcher.EnableRaisingEvents = true;
_watcher.Error += new ErrorEventHandler(OnError);
}
private void watcher_FileChanged(object sender, FileSystemEventArgs e)
{
// Folder with new files - one or more files
string folder = @"C:\Projects\Data\Test1";
System.Console.WriteLine(@"C:\Projects\Data\Test1");
//Console.ReadKey(true);
// Folder to delete old files - one or more files
string output = @"C:\Temp\Test1\";
System.Console.WriteLine(@"C:\Temp\Test1\");
//Console.ReadKey(true);
// Create name to call new zip file by date
string outputFilename = Path.Combine(output, string.Format("Archive{0}.zip", DateTime.Now.ToString("MMddyyyy")));
System.Console.WriteLine(outputFilename);
//Console.ReadKey(true);
// Save new files into a zip file
using (ZipFile zip = new ZipFile())
{
// Add all files in directory
foreach (var file in Directory.GetFiles(folder))
{
zip.AddFile(file);
}
// Save to output filename
zip.Save(outputFilename);
}
DirectoryInfo source = new DirectoryInfo(output);
// Get info of each file into the output directory to see whether or not to delete
foreach (FileInfo fi in source.GetFiles())
{
if (fi.CreationTime < DateTime.Now.AddDays(-1))
fi.Delete();
}
}
파일 내용 변경을 잡으려면'NotifyFilters.LastWrite' 외에도'NotifyFilters.Attributes'를 감시해야합니다. 다른 속성 기반 알림 ('CreationTime','Size' 등)에 대해서도 마찬가지입니다. –