FileSystemWatcher没有捕获更改

时间:2018-11-14 19:25:29

标签: c# visual-studio filesystemwatcher

FileSystemWatcher不适用于另一个程序正在写入的文件。每次写入此文件时,都会添加一个新行。我想知道什么时候发生。我试图实现FileSystemWatcher,但是,它不会在每次更改时提醒我。我知道文件何时被写入,因此我知道观察者错过了提醒我的时间。我创建了一个按钮来检查文件大小。单击按钮后(知道文件已写入),警报最终触发。我向观察者添加了一个错误,以尝试检查缓冲区是否已满,但事实并非如此。我认为这与文件仍然可以被其他程序写入的事实有关。任何意见,将不胜感激。程序启动时,将运行CreateFileWatcher。显示的路径不是真实路径。我只想在文件写入时收到警告。

 public void CreateFileWatcher()
    {
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = @"C:\Program Files\test";
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size;
        watcher.Filter = "";

        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Error += new ErrorEventHandler(LogBufferError);

        watcher.EnableRaisingEvents = true;
    }

 private void OnChanged(object sender, FileSystemEventArgs e)
    {
        MessageBox.Show("SomethingChanged");
    }

    void LogBufferError(object sender, ErrorEventArgs e)
    {
        string log = string.Format("{0:G} | Buffer limit exceeded", DateTime.Now);
        MessageBox.Show("BufferError");
    }

1 个答案:

答案 0 :(得分:0)

您的过滤器必须为:

watcher.Filter = "*.*";