我在FileSystemWatch遇到了一些奇怪的行为。下面是我的C#代码:
FileSystemWatcher fs = new FileSystemWatcher(_sd);
fs.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
fs.Filter = "*.*";
fs.Deleted += new FileSystemEventHandler(fs_Changed);
fs.Created += new FileSystemEventHandler(fs_Changed);
fs.Renamed += new RenamedEventHandler(fs_Renamed);
fs.Changed += new FileSystemEventHandler(fs_Changed);
fs.Error += new ErrorEventHandler(fs_Error);
fs.IncludeSubdirectories = true;
fs.EnableRaisingEvents = true;
我的事件处理程序为:
static void fs_Changed(object sender, FileSystemEventArgs e)
{
MessageBox.Show("Folder changed", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
没有更多或更少的东西。
当我运行窗口表单应用程序时,它会监视该文件夹。据说在我的文件夹中,我确实有3个现有的文件。现在,我再添加一个文件,MessageBox.Show(...)调用 4次 ???? !!!!基本上,它调用该目录中文件数量的次数!!!! ???
我做错了吗?它对我来说看起来很基本,我想知道为什么我会接到4个电话?
问题:有没有办法只召唤一次?有解决方法吗?