【问题标题】:FileSystemWatcher doesn't recognize Excel SaveAsFileSystemWatcher 无法识别 Excel SaveAs
【发布时间】:2009-09-23 16:08:12
【问题描述】:

我有一个使用 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;
            }
        }
    }

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

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

【问题讨论】:

  • 向我们展示未被调用的代码并不是很有帮助。向我们展示你用来配置应该触发代码的观察者的代码。

标签: c# windows-services filesystemwatcher


【解决方案1】:

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

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

【讨论】:

  • 是的,就是这样!添加 watcher.Renamed += new RenamedEventHandler(watcher_FileRenamed);成功了。感谢您的快速回复。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多