我使用文件监视器来监视文件夹上的文件创建,我的代码如下: -
_watcher = new FileWatcher();
_watcher.Path = ConfigurationManager.AppSettings["LandingArea"];
_watcher.NotifyFilter =
NotifyFilters.CreationTime |
NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.DirectoryName |
NotifyFilters.LastAccess;
_watcher.Filter = "*.xml";
_watcher.EnableRaisingEvents = true;
_watcher.Created += _watcher_Created;
-----------------------事件在下面--------------------- -
private void _watcher_Created(object sender, System.IO.FileSystemEventArgs e)
{
DataAccessLayer.InsertFileToDatabase();
}
我的问题是我同时收到3个文件,并且只有1个文件被插入到数据库中,这意味着即使我创建了3个文件,文件观察者也只为1个文件触发了事件。
这里有任何帮助。
答案 0 :(得分:0)
调用InsertFileToDatabase时忽略FileSystemEventArgs。我怀疑这个方法中的逻辑可能存在错误。
事件参数携带新文件的完整路径,以及信息在其上发生了什么样的更改。我建议你依靠那个对象,而不是自定义逻辑。
这意味着文件观察者仅针对1个文件触发了事件,即使我创建了3个文件。
这只是间接的结论,可能是错的。我建议你审核事件处理程序并跟踪完整路径并从事件参数中更改类型,这将引导您找到解决方案。