3

我有一个使用 FileSystemWatcher 作为 Windows 服务运行的简单应用程序。文件通过 excel VB 宏保存到目录中

ActiveWorkbook.SaveAs Filename:= "pathToSaveTo"

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

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

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

有人知道将文件保存到目录时如何获得预期的行为吗?

4

2 回答 2

6

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

如果您还没有这样做,请尝试注册这些其他事件,看看它们是否会触发“SaveAs”?

于 2009-09-23T16:18:46.187 回答
0

如果文件已经存在并且正在被覆盖,您将不会收到 Created 事件。尝试连接 Changed 事件。

于 2009-09-23T16:20:07.627 回答