private void Watcher()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\temp";
watcher.NotifyFilter = NotifyFilters.LastWrite; // Only watch text files.
watcher.Filter = "*.txt"; // Add event handlers.
watcher.Changed += new FileSystemEventHandler(fileChange);
watcher.EnableRaisingEvents = true; }为什么当文件变化时会执行两次 fileChange方法?
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\temp";
watcher.NotifyFilter = NotifyFilters.LastWrite; // Only watch text files.
watcher.Filter = "*.txt"; // Add event handlers.
watcher.Changed += new FileSystemEventHandler(fileChange);
watcher.EnableRaisingEvents = true; }为什么当文件变化时会执行两次 fileChange方法?
解决方案 »
- 我都换代理服务器了,怎么网站还知道是我呢?
- 请问 string怎么转换成uri (url)
- 下面这个代码有点错误,不知道哪位有空帮我看看哪里错了,谢谢。
- Excle数据导入oracle出错,数据只有2千多条,在线等救命呀。
- OFFICE 找不到他的一个依赖项,高分求解(100),都来看看啊
- 数据集复制到远程服务器问题
- PNG 图片缩放问题
- 请问配置管理中的三库,是那三库?
- 有时间+有兴趣的高手进来帮菜鸟解决个很伤脑筋的问题.........N个TextBox怎么实现实现拖拉式(+算法)的效果?
- static public int test(){}和public static int test(){}有何区别?
- ●●●●●●●高手救我!●●●●●●●
- ***********〉〉〉〉〉〉〉〉〉 感兴趣的朋友来看看这个奇怪的问题,一条简单 的 insert 语句。
--------------------------------------
备注
当对所监视的目录中的文件或目录的大小、系统属性、上次写入时间、上次访问时间或安全权限进行更改时,将引发 Changed 事件。注意 公共文件系统操作可能会引发多个事件。例如,将文件从一个目录移到另一个目录时,可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作,因此会引发多个事件。同样,一些应用程序(如反病毒软件)可能导致被 FileSystemWatcher 检测到的附加文件系统事件。
使用 NotifyFilter 限制处理此事件时引发的通知数。
为单一操作生成的多个 Created 事件
在某些情况下,您可能会注意到单一创建事件会生成多个由您的组件来处理的 Created 事件。例如,如果您使用 FileSystemWatcher 组件来监视目录中新文件的创建,然后使用“记事本”创建一个文件以对其进行测试,您将看到两个已生成的 Created 事件(尽管只创建了一个文件)。这是因为“记事本”在写进程期间执行多个文件系统操作。“记事本”按批写入磁盘,这些批会创建文件的内容和文件属性。其他应用程序可能以同样的方式执行。由于 FileSystemWatcher 监视操作系统活动,则将选取这些应用程序触发的所有事件。注意 “记事本”还可以导致其他有趣的事件生成。例如,如果您使用 ChangeEventFilter 指定只需要监视属性变化,然后使用“记事本”写入到所监视的目录中的一个文件,则将引发一个事件。这是因为“记事本”在此操作期间更新了文件的 Archived 属性。
在目录中生成的意外事件
如果更改通过 FileSystemWatcher 组件监视的目录中的文件,则不仅对该文件生成 Changed 事件,还会为目录本身生成类似的事件。这是因为该目录为它所包含的每一文件维护若干类型的信息,其中包括文件的大小和名称、修改日期、属性等等。当上述属性之一更改时,该目录也将发生关联的更改。