有没有办法知道FileSystemInfo.Refresh失败了?

时间:2017-01-07 14:08:10

标签: c# ntfs file-access access-rights file-attributes

FileSystemInfo.Refresh似乎需要文件的特定权限,即使我在文档中找不到任何相关内容。我怀疑它需要写访问才能正常工作。

有没有办法检查对该方法的调用是否失败?它没有抛出任何异常,即使它没有做任何事情。我可以检查文件的可用权限(并为只读文件做一些不同的事情),但理想情况下我想处理一般情况。

某些背景信息:

我写了一个跟踪另一个软件写的日志文件的软件。我使用FileSystemWatcher的实例来监听文件系统更改。我注意到即使日志文件被第三方软件修改,也不会触发Changed事件并且"日期被修改"文件资源管理器中显示的内容也未更新。

然后我发现打开日志文件(例如在记事本中)会强制更新时间戳(并随后触发Changed的{​​{1}}事件。)

我得出结论,第三方正在使用某种流来更新日志,这些流没有改变最后修改的时间戳(可能永远不会关闭流?我不确定如何实现这一点)。手动打开日志文件基本上会刷新有关该文件的文件系统信息,这将让我的代码知道发生了更新。

我找到的解决方案是安排定期呼叫FileSystemInfo.Refresh我正在监控的文件(比如每2秒)。如果文件未被更改,则不会发生任何事情(如预期的那样),但如果第三方附加了行,那么我的FileSystemWatcher会引发FileSystemWatcher事件。

它工作得非常好(虽然看起来并不漂亮),只是有些用户报告它没有做到这一点(如果他们在记事本中打开日志文件,日志监视过程会赶上)

0 个答案:

没有答案