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");
}
答案 0 :(得分:0)
您的过滤器必须为:
watcher.Filter = "*.*";