日期:2014-05-17  浏览次数:20835 次

还是关于fileSystemWatcher的问题,请帮帮忙调试一下
本帖最后由 mpy2003 于 2013-12-25 15:00:25 编辑
不能上传附件

        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内的文件都不触发事件?