【发布时间】:2013-12-31 13:04:47
【问题描述】:
我正在开发一个 Windows 服务应用程序,它监视“C:\Program Files (x86)\My Directory\My Data”中的 CSV 文件。该服务能够读取/写入此位置。我已经测试了在服务启动时将文本文件写入目录,到目前为止一切似乎都很酷。
FileSystemWatcher 的 OnChanged 处理程序在更新 CSV 文件时触发。但是在调用以下行时:
Dim myStream As Stream = New FileStream(e.FullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
即使文件存在,我也会收到FileNotFoundException。至此,我已经检查了文件权限并尝试使用服务器的管理员帐户运行我的服务,但没有成功。
对这种行为有什么想法吗?
【问题讨论】:
-
您的程序可能会受到文件系统重定向,64位应用程序会看到c:\program文件中的文件,32位应用程序会被重定向到c:\程序文件(x86)。这可能与它有关,您的问题没有充分记录,无法拨打电话。
-
即使是 64 位应用程序,我也明确对“Program Files (x86)”文件夹进行了静态引用。我一直在玩这个。似乎问题出现在我检查
If e.ChangeType = WatcherChangeTypes.Changed然后设置watcher.EnableRaisingEvents = False以禁用 OnChanged 处理程序的重复提升的块中。
标签: .net windows-services filesystemwatcher