FileSystemWatcher无法识别Excel SaveAs

时间:2009-09-23 16:08:13

标签: c# windows-services filesystemwatcher

我有一个使用FileSystemWatcher作为Windows服务运行的简单应用程序。文件通过excel VB Macro with

保存到目录中
ActiveWorkbook.SaveAs Filename:= "pathToSaveTo"

在创建新文件时,观察者调用一个方法来处理文件

void watcher_FileCreated(object sender, FileSystemEventArgs e)
    {
        while (true)
        {
            if (FileUploadComplete(e.FullPath))
            {
                this.ProcessOneFile(e.FullPath, e.Name);
                break;
            }
        }
    }

当发生这种情况时,观察者应用程序从不注册事件,但手动删除并重新添加文件到文件夹会导致事件被引发。

当文件保存到目录中时,是否有人知道如何获得预期的行为?

2 个答案:

答案 0 :(得分:6)

只是在黑暗中拍摄,也许“SaveAs”的实现正在做一些奇怪的事情,比如将数据写入临时文件,然后将其“移动”到最终目录中,最终目录可能会像'重命名'或'改变了'事件而不是。

如果您还没有这样做,请尝试注册这些其他事件,看看他们是否会在'SaveAs'上开火?

答案 1 :(得分:0)

如果文件已存在且正在被覆盖,则不会获得Created事件。尝试连接Changed事件。