2

我编写了一个实用程序来确定 Excel 文件何时更新。更新完成后,我必须阅读相同的 Excel 文件。但是,我没有收到有关更新的通知,而是通知了临时文件的创建(这对我没有用)。如何以 C# Windows 形式执行此操作?

这是使用的代码片段:

                  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);
            }

有什么我想念的吗?

4

2 回答 2

3

这是设计使然,是许多程序的常用方法。修改文件时,他们会尝试确保这些修改不会在因任何原因失败时破坏原始文件。所以他们将原始文件复制到一个临时名称,对该临时文件进行更改。并且当没有问题时,重命名原始,重命名临时给它与原始相同的名称,最后删除重命名的原始。

因此,您还需要对 Renamed 事件感兴趣。

于 2012-06-01T12:27:34.373 回答
0
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
        }
于 2012-06-01T11:02:03.120 回答