0

我有一个在 Windows CE 6(手持)上运行的程序,我注意到这种情况经常发生。我存储了HKEY_CURRENT_USER\SOFTWARE\my-app一个值,该值用于控制用户使用该应用程序的最后日期。这个值在我的程序中更新了很多次。在受控测试中,我在取出电池强制重启之前检查了该值,我看到了一个值,为简单起见说“A”。但是这个测试失败了,我不得不重新开始。然后,我检查了注册表值,现在它是值“B”。然后,我再次取出电池进行测试,重新启动后我注意到值“A”再次存储在注册表中。

正在发生的事情是 Windows 没有将值“提交”到永久存储,并且当我重新启动时它被缓冲在内存中。无论如何,有没有办法强制将此值存储到硬盘驱动器?或者,如果不是这种情况,那么为什么将这个旧值恢复回注册表以及如何避免这种情况发生?提前致谢。

4

1 回答 1

0

问题解决了。根据msdn,该 flush() 方法解决了它:

不必调用 Flush 来写出对键的更改。当注册表使用其惰性刷新器时,注册表更改会刷新到磁盘。延迟刷新会在系统指定的时间间隔后自动并定期发生。注册表更改也会在系统关闭时刷新到磁盘。

与 Close 不同,Flush 函数仅在所有数据都写入注册表时才返回。

Flush 函数也可能写出部分或全部其他键。过度调用此函数会对应用程序的性能产生负面影响。

只有当必须绝对确定注册表更改记录到磁盘时,应用程序才应调用 Flush。一般来说,Flush 很少(如果有的话)需要使用。

问题是我没有给这个“懒惰的冲洗器”足够的时间来将寄存器存储到磁盘中。我在之后立即拨打了电话,flush()之后SetValue()我注意到这些值已正确存储并且我已经停止了错误。

于 2017-06-13T20:11:08.080 回答