我用filesystemwatcher实时监控服务器的某个文件夹,服务器端出现变动则将变动的文件拷贝到本地机器上。   
    
  问题:   
    
  服务器端文件一出现变动,filesystemwatcher   立即触发onchange事件,并开始拷贝,造成只能拷贝O字节文件,如何控制程序,使其等待服务器端文件完成变动动作后再拷贝

解决方案 »

  1.   

    是不是Copy函数的问题呀,没有读取完全?
    OnCreated事件触发后,Copy执行前,判断一下新文件大小
    另外catch一下,有没有其它的Exception
      

  2.   

    拷贝文件过程中可能会调用若干次onchanged
    但是拷贝文件完成后肯定会有一次onchanged调用,根据MSDN的要求,应该尽可能使事件处理代码短小。
    可以采用这样一个办法 onchanged的处理程序不负责拷贝文件,而是将更改的文件名放在一个自定义的队列里,而在另一个过程里定时扫描这个队列 如果发现一段时间里队列没有新条目进入时合并队列中重复项,然后从队列里取出文件名进行拷贝操作。
      

  3.   

    AfterChange事件没有这个事件to graycarl(gray)
    你的方法可以试试to kkun_3yue3(遍身罗倚者,不是养蚕人) 
    文件大小不好判断的时候你的方法好像费力点
      

  4.   

    可以设置watcher.NotifyFilter = NotifyFilters.LastAccess;