想用FileSystemWatch监视一个文件的改变,但当这个文件改变时FileSystemWatch的Changed事件被触发了两次,请问这个问题怎么解决
其中FileSystemWatch的NotifyFilter设置为LastWrite

解决方案 »

  1.   

    To Knight94:
    代码如下:
    private FileSystemWatcher fileSystemWatcher;public frmMain()
    {
    InitializeComponent(); fileSystemWatcher = new FileSystemWatcher(); fileSystemWatcher.EnableRaisingEvents = true;
    fileSystemWatcher.Filter = "ForeignExchange.txt";
    fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite;
    fileSystemWatcher.Path = "E:\\MyFiles";
    fileSystemWatcher.SynchronizingObject = this;
    fileSystemWatcher.Changed += new FileSystemEventHandler(fileSystemWatcher_Changed);
    }private void fileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
    {
    if (e.ChangeType == WatcherChangeTypes.Changed && File.Exists(e.FullPath)) {
    FileInfo fi = new FileInfo(e.FullPath);
    if (fi.Name == "ForeignExchange.txt") {
    Console.WriteLine(true);
    } else {
    Console.WriteLine(false);
    }
    }
    }
      

  2.   

    To Knight94:
    这个引发的原因我也想到了,但怎么才能只接收一个事件呢
    在国外一些论坛里也看到这个问题,但都没找到解决方法
    我现在采用的是用了一个bool变量来过滤第二次触发事件,但我怕会出现问题,仍不能定下来