使用FileSystemWatcher监控网络路径

在VS2005中,.Net里面有个FileSystemWatcher控件,用来监控文件变化,它会通知文件创建,修改,删除的消息。网上这样的例子很多,但是在实际应用的时候,发现还有一些待处理的问题,我做了一个简单的demo,解决了如下的问题:

1.多次连续触发 (通过一个定时器来解决)

2.能监控网路路径 (serviceProcessInstaller的Account属性设置为NetworkService)

3.通过windows service来实现, 做成安装文件方便注册服务

注意事项:

1.切记网络路径要给guest的权限,否则监控不了。

2.修改Service1代码中的watcher.Path。

3.新建文件c:\test.log,将此文件设置为可写的权限。

4.安装完成后手动将服务启动。

关键代码:

public class AdvancedFileSystemWatcher : System.IO.FileSystemWatcher
  {
    public event NetworkPathUnavailableEventHandler NetworkPathUnavailable;
    public delegate void NetworkPathUnavailableEventHandler(string Message);
    public event NetworkPathAvailableEventHandler NetworkPathAvailable;
    public delegate void NetworkPathAvailableEventHandler(string Message);
    private System.Timers.Timer _myTimer = new System.Timers.Timer();
    private bool _isNetworkUnavailable = false;

    public AdvancedFileSystemWatcher()
    {
      _myTimer.Start();
    }

    public AdvancedFileSystemWatcher(int iNetworkWatchInterval)
    {
      if (iNetworkWatchInterval > 0)
      {
        _myTimer.Interval = iNetworkWatchInterval;
      }
      else
      {
        _myTimer.Interval = 2000;
      }
      _myTimer.Start();

    }

    public void close()
    {
      _myTimer.Stop();
      _myTimer.Dispose();

    }

    private void _myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
      DirectoryInfo myFolder;

      try
      {
        myFolder = new DirectoryInfo(base.Path);
        if (!_isNetworkUnavailable)
        {
          if (!myFolder.Exists)
          {
            _isNetworkUnavailable = true;
            if (NetworkPathUnavailable != null)
            {
              NetworkPathUnavailable("A network error has occured or the path does not exist anymore");
            }
          }
        }
        else
        {
          if (myFolder.Exists)
          {
            _isNetworkUnavailable = false;
            if (NetworkPathAvailable != null)
            {
              NetworkPathAvailable("The network or path has been restored");
            }
          }
        }
      }
      catch (Exception ex)
      {
        throw;
      }
      finally
      {
        myFolder = null;
      }

    }

  }

源码下载:http://files.cnblogs.com/binbin1845/FileWatchServiceTest.rar

时间: 2024-08-02 13:28:59

使用FileSystemWatcher监控网络路径的相关文章

运用Ntop监控网络流量(视频Demo)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/1329657 运用Ntop监控网络流量 ____网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降.网络性能降低.通过流量测量不仅能反映网络设备(如路由器.交换机等)的工作是否正常,而且能反映出整个网络运行的资源瓶颈,这样管

如何在SQL server 2005中将数据库备份路径设为网络路径

server|备份|数据|数据库|网络 如何在SQL server 2005中将数据库备份路径设为网络路径如:"\\BackupPC\dbback\" SQL server 2000中是可以的呀,怎么到2005就不好这样做的???=================================现在备份数据库真麻烦,都要先备份到本机,然后再剪切到网上邻居的另一台电脑中,真郁闷!!!! ===================================================

DameWare Mini远程连接报错信息“找不到网络路径”的处理方法

DDameWare remote control工具进行开始远程控制时总是弹出"找不到网络路径"错误提示对话框. DameWare"进行远程控制时,要将DameWare程序拷贝到被控制机的"ADMIN$"目录下,才能进行远程控制的.所以如果被远程控制机关闭了"ADMIN$"共享,就无法正常使用了. 解决方法: 修改被控制机的注册表("开始→运行-输入"regedit") 在注册表编辑器中依次展 HKEY_L

Windows 7访问远程共享文件时0x80070035错误 找不到网络路径解决方法

昨天刚装WIN7系统,今天早上准备访问服务器安装些软件,结果出现网络错误,提示Windows无法访 问共享文件夹,错误代码是0x80070035,提示找不到网络路径.那么是什么原因导致WIN7下无法访问共 享呢? WIN7找不到网络路径分析思路 发现提示找不到网络路径以后,首先ping了服务器 的ip地址,发现可以ping通,其他电脑访问正常.说明不是我的网络问题,而是WIN7系统的设置问题. 在控制面板\网络和 Internet\网络和共享中心\高级共享设置,打开文件共享. 关闭WIN7防火墙

加入域时提示找不到网络路径或活动目录缺少dns记录

电脑计算机加入域时提示找不到网络路径|活动目录缺少dns记录.最近总是能看到朋友们在问,客户端加入域时报错: 加入域时出现了以下错误,系统提示找不到网络路径.为什么呢? 常见的原因有这么几种: 1.客户端首要dns,也就是 primary dns没有填写,没有指向DC域控制器的DNS. 2.DC域控制器上没有安装DNS服务. 3.DNS服务器上没有DC域控制器的SRV记录,或者是错误的. 那么如何解决加入域时找不到网络路径的问题呢? 1.修改TCP/IP的设置,将首要primary dns修改为

利用Shell配合绘图工具GnuPlot图形化监控网络流量

网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状态的工具,不仅能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.还能在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知等功能.除此之外Nagios简单地插件设计使得用户可以方便地扩展自己服务的检测方法.也正

加速人生测网速 监控网络“交通”环境

电脑网速慢,是个老生常谈的话题,想要对症下药,就得找到导致网络"交通"的堵塞的原因!打开加速人生,答案立即揭晓!加速人生,实时监控网络情况,维护网络"交通"环境;网速测试功能让虚假带宽无处遁形;立即测速,轻松还你顺畅和谐的网络"交通"环境! 在加速人生软件的主界面上,我们可以看到,除了常用的加速项目之外,加速人生还专门针对网络问题设置了"网络管理"界面. 图1 点击进入可以看到由"网速监控"和"网

Linux系统上安装MRTG来监控网络流量

Multi Router Traffic Grapher------MRTG是一个监控网络链路流量负载的工具软件,通过snmp协议得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载. SNMP(imple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理.随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB:体

Windows 2008共享文件出错:找不到网络路径解决

在一台Windows Server 2008上共享文件后,发现另一台2008无法连接过来, 提示:0x80070035 找不到网络路径 测试可以ping通,说明网络没有问题.于是尝试把防火墙.安全策略都关了,但无济于事. 后来发现是客户机的网卡上,没有启用Microsoft网络客户端: 勾上后重试,发现问题就解决了.