以下问题不是典型的编程问题,但恕我直言,程序员受此影响并且最有可能有解决方案。
我有一个与服务器通信的 Windows 桌面应用程序。客户端应用程序具有可选的“离线模式”功能(主要用于笔记本电脑),该功能通过在本地序列化 DTO 来工作,直到用户返回其 LAN。DTO 被序列化为加密的 XML 文件,这些文件在数据更改时写入(写入用户的 [AppData]/AppName 目录)。
问题是一些用户倾向于让应用程序打开并关闭笔记本电脑,直到电池最终耗尽,当他们返回办公室时,笔记本电脑磁盘上的任何地方都不存在 XML 文件。
我已经无数次地梳理了代码,实现了各种写入器/流刷新,文件写入后的文件存在性/时间戳检查等,它仍在发生。我唯一能想到的是 Windows 写入缓存,它在 XP、Vista 和 7 上默认启用。是否知道它会导致此类问题以及如何在我的应用程序中防止它们(没有强制用户关闭全局写入缓存)?
我发现Sysinternals Sync似乎可以刷新磁盘缓存,但它需要我的用户没有的管理员权限。