还是关于fileSystemWatcher的问题,请帮帮忙调试一下
private void button2_Click(object sender, EventArgs e)
{
this.folderBrowserDialog1.Description = "请请选择监控路径";
if (this.folderBrowserDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.textBox1.Text = this.folderBrowserDialog1.SelectedPath;
this.fileSystemWatcher1 = new System.IO.FileSystemWatcher();
this.fileSystemWatcher1.Path = this.textBox1.Text;
this.fileSystemWatcher1.IncludeSubdirectories = true;
this.fileSystemWatcher1.Created += new FileSystemEventHandler(watcher_Change);
this.fileSystemWatcher1.Deleted += new FileSystemEventHandler(watcher_Change);
this.fileSystemWatcher1.Renamed += new RenamedEventHandler(watcher_reName);
this.fileSystemWatcher1.EnableRaisingEvents = true;
}
}
private void watcher_Change(object sender, FileSystemEventArgs e)
{
MessageBox.Show(e.ChangeType + "\n" + e.FullPath);
}
private void watcher_reName(object sender, RenamedEventArgs e)
{
MessageBox.Show("Change File: \n" + e.OldName + "\n to: \n" + e.Name);
}
实验:
现在是目录树结构是这样的:根目录下有子目录A和B,现在选择A做为监控目录
将B拖入到监控目录A时,文件夹会触发监控事件,B再剪切到根目录时,也只有文件夹会触发事件,B里面的文件都不触发事件。
而如果不是将B从外面移进去的,就是说不是同一根目录下的B目录拷贝后进入A粘贴,B及B里面的文件都会触发事件,同样,直接从A里面把B目录删除,也是B及B里面的文件都会触发事件
这是什么原因呢,难道从A目录下将B移出到与A同根目录下就不算删除吗?为什么B内的文件都不触发事件?
[解决办法]
http://blog.sina.com.cn/s/blog_87ff350f0100x5m7.html
[解决办法]
http://blog.csdn.net/chen_zw/article/details/7916262