LastWrite FileSystemWatcher中的NotifyFilter

我已经编写了一个实用程序来确定何时更新Excel文件。 一旦更新完成,我必须读取相同的Excel文件。 但是,我没有通知更新,而是通知临时文件创build(这对我来说是没有用的)。 我怎样才能在C#窗体中做到这一点?

这是使用的代码片段:

watcher.EnableRaisingEvents = true; watcher.Filter = "*.xlsx"; watcher.NotifyFilter = NotifyFilters.LastWrite; watcher.Path = "G:\\Prerequisites Folder"; watcher.SynchronizingObject = this; watcher.Changed += new FileSystemEventHandler(watcher_Changed); void watcher_Changed(object sender, FileSystemEventArgs e) { if (e.Name.StartsWith("~") == false) btnRefreshPrequisites_Click(null, null); } 

任何我缺less的东西?

这是devise,许多程序的通用方法。 当修改文件时,他们试图确保这些修改不会由于任何原因而破坏原始文件。 因此,他们将原始文件复制到临时名称,对该临时文件进行更改。 而且什么也没有出错,重命名原件,重命名临时给它与原来的同名,最后删除重命名的原件。

所以你也需要对重命名的事件感兴趣。

 void watcher_Changed(object sender, FileSystemEventArgs e) { //no need to check if (e.Name.StartsWith("~") == false) // comment the if statement if (e.Name.StartsWith("~") == false) btnRefreshPrequisites_Click(null, null); //do your work }