我FileSystemWatcher
用来跟踪目录的更改。问题是我必须跟踪并修改我正在监视的任何最近创建的子目录。到目前为止,我只是使用Change
事件检测到一些更改,检查是否是一个目录并为该子目录FullPath
创建一个新实例。FileSystemWatcher
private static void StartMonitoringDir(string dir)
{
var fileWatcher = new FileSystemWatcher(dir)
{
EnableRaisingEvents = true,
Filter = "*.exe"
};
var folderWatcher = new FileSystemWatcher(dir)
{
EnableRaisingEvents = true
};
fileWatcher.Created += FileWatcherOnCreated;
fileWatcher.Changed += FileWatcherOnChanged;
folderWatcher.Created += FolderWatcherOnCreated;
}
private static void FolderWatcherOnCreated(object sender, FileSystemEventArgs e)
{
var attr = File.GetAttributes(e.FullPath);
if (attr != FileAttributes.Directory) return;
StartMonitoringDir(e.FullPath);
}
所以,这就是问题所在。一旦我创建了一个目录,Changed
就会使用名称引发事件"New Folder"
,因此当用户重命名此文件夹并在其中进行修改时,我会得到文件夹的旧名称,"New Folder"
而不是用户命名的名称。我无法知道文件夹的新名称是什么,也无法进行修改,因为我的目录名称错误。