-1

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

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

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

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

我发现Sysinternals Sync似乎可以刷新磁盘缓存,但它需要我的用户没有的管理员权限。

4

1 回答 1

0

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

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

于 2012-07-04T14:42:34.940 回答