执行之间的常量数据

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

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

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

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

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

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

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

干杯

【讨论】:

以上是关于执行之间的常量数据的主要内容,如果未能解决你的问题,请参考以下文章

统计分析术语描述

labview真假常量有啥用

三种差异分析的整理

Java初学者之变量及运算

在 cuda 线程之间共享大量常量数据

在 iOS 客户端代码和 Parse 云代码之间共享常量