`
andy_ghg
  • 浏览: 293762 次
  • 性别: Icon_minigender_1
  • 来自: 扬州
社区版块
存档分类
最新评论

解决C#中FileSystemWatcher类的Changed事件触发多次的问题。

    博客分类:
  • C#
阅读更多
        fsw = new FileSystemWatcher(System.Environment.CurrentDirectory + "\\conf\\","*.xml");
            fsw.EnableRaisingEvents = true;
            fsw.NotifyFilter = NotifyFilters.LastWrite;
            fsw.Changed += new FileSystemEventHandler(fsw_Changed);



首先设置NotifyFilter为LastWrite,这个就屏蔽了因为杀毒软件等各种外部因素导致Changed事件被触发。



然后设置它的EnableRaisingEvents属性如下:


private void fsw_Changed(object sender,EventArgs e)
        {
            fsw.EnableRaisingEvents = false;
            LoadTreeViewData();
            fsw.EnableRaisingEvents = true;
        }

这样,先设置为false然后处理完文件之后再设置为true即可。
0
0
分享到:
评论
1 楼 doylecnn 2011-04-11  
这个时候另一个*.xml文件发生了改动会如何?
我的解决放按是
1:增加一个list,存放文件列表
2:在change事件处理中,首先比对,该文件是否存在于list中
3:存在于list中,change事件就不管了
4:不存在list中,尝试打开文件,这时候如果文件实际的更改尚未完成,会抛异常
5:抛异常了,将该文件扔到list里去
6:没抛异常,处理该文件的动作(我会再开一个线程去处理,免得处理时间太长,又漏掉其他change事件)
7:开一个线程,while死循环检查list中的文件是否可以打开,如果可以打开了,说明change事件已完成,拿去处理,并从list里挪走即可,否则,继续留在list里.

其他细节自己考虑,比如线程退出啥的

相关推荐

    FileSystemWatcher控件:事件触发多次的解决方法

    然而,在实际使用过程中,开发者可能会遇到一个常见的问题:Changed事件被多次触发,这在处理大量或快速连续的文件更改时尤为明显。 这个问题的根本原因在于,当文件进行连续或快速的修改时,FileSystemWatcher可能...

    FileSystemWatcher多次触发事件的可靠解决方案

    总结来说,解决`FileSystemWatcher`多次触发事件的问题,我们需要理解其工作原理,然后通过引入事件记忆缓存来过滤重复的事件。这样,我们可以确保应用程序对文件系统变化的响应既准确又高效。在使用`...

    C# 中filesystemWatcher的使用

    在C#编程中,`FileSystemWatcher`类是一个非常重要的工具,它允许开发者实时监控文件系统中的事件,如文件创建、删除、重命名或修改。这个类是.NET框架的一部分,位于`System.IO`命名空间内,使得开发人员可以轻松地...

    c#中filesystemwatcher demo

    在C#编程中,`FileSystemWatcher` 是一个非常重要的类,它允许开发者监控指定目录及其子目录中的文件和目录变化。这个类是 .NET Framework 的一部分,位于 `System.IO` 命名空间中,提供了实时跟踪文件系统更改的...

    C#使用FileSystemWatcher组件监视系统日志文件是否被更改

    8. **事件触发频率**:`FileSystemWatcher`可能连续触发多次`Changed`事件,尤其是在大文件更改时。因此,处理程序可能需要采取适当的同步措施,避免重复处理同一事件。 9. **关闭和清理**:当不再需要监视时,应...

    c# FileSystemWatcher控件的使用方法

    ### c# FileSystemWatcher控件的使用方法 #### 概述 `FileSystemWatcher`是.NET Framework提供的一个类,用于监视文件系统的变化。通过该组件,开发人员可以轻松地检测到文件或目录的创建、修改和删除等操作,并...

    FileSystemWatcher 多文件夹、多文件类型文件监控完整实例源码

    FileSystemWatcher是.NET Framework提供的一种非常实用的类,用于实时监控文件系统中的变化。这个类允许开发者设置特定的文件夹和文件类型,以便在这些对象发生创建、修改、删除或重命名等事件时得到通知。本实例...

    C#的FileSystemWatcher用法实例详解

    FileSystemWatcher是C#中用于实时监控文件系统变化的类,它是System.IO命名空间的一部分。这个控件可以帮助开发者跟踪文件和目录的各种操作,如创建、删除、重命名和修改,从而在这些事件发生时做出响应。以下是对...

    C# 如何监视文件变化的各事件

    在本篇内容中,我们将深入探讨如何利用C#中的`FileSystemWatcher`类来监视文件系统中的文件变化。此方法在需要实时监控文件或目录更改的应用场景中非常实用,例如用于日志文件分析、自动化构建系统或是任何需要对...

    FileSystemWatcher 文件监控

    通过实例化FileSystemWatcher对象并设置其属性,我们可以定义要监视的目录、要关注的事件类型以及事件触发后的处理方式。例如: ```csharp FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = @...

    c#使用filesystemwatcher监视文件系统的变化

    在C#编程中,`FileSystemWatcher` 是一个非常实用的类,用于监视文件系统中的更改,如文件或目录的创建、删除、重命名以及内容修改等事件。这个类位于 `System.IO` 命名空间下,使得开发者能够轻松地跟踪指定文件夹...

    用FileSystemWatcher控件实现文件同步更新

    3. **事件处理**:`FileSystemWatcher`有多个事件,如`Created`、`Deleted`、`Changed`和`Renamed`,你可以为这些事件添加事件处理程序来执行相应的操作。例如,监听文件创建事件: ```csharp watcher.Created += ...

    C#使用FileSystemWatcher控件实现的文件监控功能示例

    FileSystemWatcher是C#中用于实时监控文件系统变化的控件,它可以监听文件或目录的各种变更事件,如创建、修改、删除、重命名等。在实际应用中,它可以帮助开发者及时响应文件系统的变动,例如在协作编辑文档、日志...

    FileSystemWatcher 监控目录变化及更新

    在实际应用中,可能还需要考虑性能问题,因为频繁的文件更改可能会触发大量事件,过多的事件处理可能导致性能下降。这时,可以通过调整`NotifyFilter`和`InternalBufferSize`属性,或者在事件处理函数中加入节流或...

    FileSystemWatcher监控目录

    当文件或目录发生改变时,它会触发相应的事件,如Changed、Created、Deleted、Renamed等。开发者可以为这些事件添加事件处理程序,从而在事件发生时执行特定的操作。 创建一个FileSystemWatcher实例,我们需要设置...

    C# FileSystemWatcher 在监控文件夹和文件时的使用方法

    这个事件可能会被触发多次,因为通常一个文件被保存时,它的大小、最后写入时间等属性也可能发生变化。 当监控目录中新建一个文件时,FileSystemWatcher会触发Created事件。需要注意的是,在处理Created事件时,...

    C#对多文件夹监视

    在C#编程中,`FileSystemWatcher`类是一个非常重要的工具,它允许开发者监控指定文件或文件夹的更改、创建、删除等事件。这个类是.NET Framework提供的,属于System.IO命名空间的一部分,使得实时跟踪文件系统变化...

    C#实现的文件夹监控

    你可以创建多个`FileSystemWatcher`实例,每个实例对应一个不同的路径,或者在单个`FileSystemWatcher`实例中多次调用`AddWatchDirectory`方法添加新的路径。 在提供的压缩包中,"FileScan.exe"可能是实现了上述...

    c#下的多文件夹监视(源码)

    在C#编程环境中,我们可以利用.NET Framework提供的System.IO命名空间中的`FileSystemWatcher`类来实现对文件或文件夹的监控。这个项目“c#下的多文件夹监视(源码)”正是利用了这一功能,旨在实时监测指定的多个...

Global site tag (gtag.js) - Google Analytics