【问题标题】:Constant Data between executions执行之间的常量数据
【发布时间】:2011-04-13 18:17:11
【问题描述】:

我有一个使用我制作的 DLL 的 C# 应用程序,我必须在 DLL 中存储 3 个必须保持不变的变量,以便即使在用户关闭程序后我也可以稍后获取它们(我需要在每次执行时获取它们在我将数据写入 DLL 之后)。我想将它们存储在 DLL 中,因为我不想使用注册表或使用任何外部文件,所以我正在考虑使用 DLL 中的资源文件来读取/写入我的静态数据。

谁能给我一个示例,说明如何使用这样的资源数据,或者建议另一种方法来做到这一点,而无需声明硬编码变量(我不能这样做),或使用注册表/外部数据文件来存储信息。

【问题讨论】:

    标签: c# variables static execution


    【解决方案1】:

    我建议使用Isolated storage 来写入您的数据。您可以快速入门here

    【讨论】:

    • 哇——好发现!喜欢这种指针。 (坦率地说,我有一种感觉我会远离这个,但那是我在编写可移植代码,我想
    【解决方案2】:

    使用常规的内存映射文件。写入二进制可执行文件是不好的做法,除了最混杂的安全策略设置之外,许多(如果不是全部)操作系统将禁止这样做。

    PS。这种存储的流行术语是“数据库”(或程序数据库)。这应该可以帮助您获得一些谷歌点击率。

    此外,根据您喜欢的实现方法,您可以使用内存映射来覆盖您的数据段(这样您就可以吃到蛋糕了:将全局静态数据保留在它所在的位置 轻松将它们提交到磁盘)。不过,这更符合 C/C++ 精神。

    在 .NET 中,您必须使用巨大的自定义布局结构(意思是,所有引用类型都不存在 - 这在 C# 中比在 C++ 中更不自然)

    因此,您最好的选择可能是使用 UnmanagedMemoryStream,使用内置的 .NET System.Runtime.Serialization 序列化您的数据(其中 XML 风格目前更流行,并且更容易从博客和其他来源复制)。

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 2011-02-10
      • 1970-01-01
      相关资源
      最近更新 更多