Windows磁盘写缓存会导致丢失文件吗?

时间:2012-07-04 14:34:13

标签: .net windows caching disk

以下问题不是典型的编程问题,但IMHO程序员受此影响并且最有可能找到解决方案。

我有一个与服务器通信的Windows桌面应用程序。客户端应用程序具有可选的“离线模式”功能(主要用于笔记本电脑),它通过在本地序列化DTO直到用户返回其LAN来工作。 DTO被序列化为加密的XML文件,只要数据发生变化就会写入(写入用户的[AppData] / AppName目录)。

问题是,有些用户倾向于让应用程序打开并关闭笔记本电脑,直到它最终耗尽电量,当他们返回办公室时,笔记本电脑磁盘上的任何地方都不存在XML文件。

我已经无数次地梳理了代码,实现了各种写入/流刷新,文件写入后的文件存在/时间戳检查等等,而且它仍在发生。我唯一能想到的是Windows写入缓存,默认情况下在XP,Vista和7上启用。是否已知它会导致此类问题以及如何在我的应用程序中阻止它们(不能强制执行用户关闭全局写缓存?)

我发现Sysinternals Sync看起来像是磁盘缓存刷新,但它需要我的用户没有的管理员权限。

1 个答案:

答案 0 :(得分:0)

我个人非常怀疑任何磁盘缓存都可能会延迟写入一个小文件超过几秒钟,除非在极端情况下。

我建议每当数据被序列化时记录一行,并检查它是否被写入;这是我相信你先试过的。