【问题标题】:Best way to retain variable values in the event of power off?断电时保留变量值的最佳方法是什么?
【发布时间】:2016-11-25 15:56:03
【问题描述】:

有没有办法将值初始化为特定值以外的内存地址?我有一个在启动时打开的 winform,我希望它可以保存用户以前的条目。我的(蹩脚的)想法是嵌入一个文本文件并将该文件中的值读取到相关变量中?有没有更专业/更清洁的方式来做我想做的事?

为了清楚起见,假设我有一个变量:string pet = "dog"。稍后在程序中,用户将把这个值更改为"fish"。现在我想将该值存储在某处,并在发生断电事件时保留它,以便在程序重新启动时,变量pet 将被初始化为存储的内存值"fish"。

【问题讨论】:

  • 内存易失。所以你在断电事件后失去了一切。您需要将它们存储在磁盘上。像@Mat 提到的使用对象序列化或写入文本文件。

标签: c# winforms variables non-volatile retained-in-memory


【解决方案1】:

对象序列化是您正在寻找的。请参阅Here 了解更多信息。

根据您的需要,有几种方法可以做到这一点。写入/读取文本文件是一种解决方案。

【讨论】:

    【解决方案2】:

    实现你想要的一个好方法是使用“设置”

    配置后,您可以在代码中的用户或应用程序级别设置它们,如下所示:

    Properties.Settings.Default.Pet = "dog";
    Properties.Settings.Default.Save();
    

    https://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx

    【讨论】:

    • 即使断电也能正常工作吗?它如何保留信息?项目目录中是否有文件或其他内容可以看到这些值?这看起来很完美。
    • 当您调用 .Save() 时,这些值会保存到磁盘中,要了解它们的存储位置,请查看以下问题:stackoverflow.com/questions/469742/…
    【解决方案3】:

    执行此操作的常用方法是将其存储在注册表中。这是一个教程,虽然有点老,但可以帮助您了解总体思路:

    All you wanted to know about the registry with C#

    使用文本文件也没有错。请记住事物的安全方面。无论您将其存储在何处,都需要确保您具有写入权限。出于这个原因,一些应用程序使用位于应用程序根文件夹中的配置文件。使用注册表时还应考虑用户上下文。

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 2015-07-13
      • 2020-09-26
      • 2016-02-28
      相关资源
      最近更新 更多