FileSystemWatcher Changed 事件引发两次 [英] FileSystemWatcher Changed event is raised twice

查看:98
本文介绍了FileSystemWatcher Changed 事件引发两次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用程序,我在其中查找文本文件,如果对文件进行了任何更改,我将使用 OnChanged 事件处理程序来处理事件.我正在使用 NotifyFilters.LastWriteTime 但该事件仍然被触发两次.这是代码.

I have an application where I am looking for a text file and if there are any changes made to the file I am using the OnChanged eventhandler to handle the event. I am using the NotifyFilters.LastWriteTime but still the event is getting fired twice. Here is the code.

public void Initialize()
{
   FileSystemWatcher _fileWatcher = new FileSystemWatcher();
  _fileWatcher.Path = "C:\Folder";
  _fileWatcher.NotifyFilter = NotifyFilters.LastWrite;
  _fileWatcher.Filter = "Version.txt";
  _fileWatcher.Changed += new FileSystemEventHandler(OnChanged);
  _fileWatcher.EnableRaisingEvents = true;
}

private void OnChanged(object source, FileSystemEventArgs e)
{
   .......
}

在我的情况下,OnChanged 被调用了两次,当我更改文本文件 version.txt 并保存它时.

In my case the OnChanged is called twice, when I change the text file version.txt and save it.

推荐答案

我已经在我的委托中使用以下策略修复"了这个问题:

I've "fixed" that problem using the following strategy in my delegate:

// fsw_ is the FileSystemWatcher instance used by my application.

private void OnDirectoryChanged(...)
{
   try
   {
      fsw_.EnableRaisingEvents = false;

      /* do my stuff once asynchronously */
   }

   finally
   {
      fsw_.EnableRaisingEvents = true;
   }
}

这篇关于FileSystemWatcher Changed 事件引发两次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆