【发布时间】:2021-09-03 06:14:56
【问题描述】:
正如我在标题中所说,我试图将一个对象放入内存中,而不是在程序结束时杀死它, 主要思想是,如果对象不在内存中,程序会在开始时创建它,但如果是,程序会检索对象的所有数据。 这是 System.Runtime.Caching 的一个例子;
class CachingTest
{
private static string WORDWRAPKEY = "WrapperWord";
public string value { get; set; }
public string data = "data to store";
public CachingTest()
{
ObjectCache cache = MemoryCache.Default;
if (cache.Contains(WORDWRAPKEY))
value = "EXIST";
else
{
CacheItemPolicy cacheItemPolicy = new CacheItemPolicy();
cacheItemPolicy.AbsoluteExpiration = ObjectCache.InfiniteAbsoluteExpiration;
cache.Add(WORDWRAPKEY, data, cacheItemPolicy);
value = "CREATE";
}
}
}
class Program
{
static void Main(string[] args)
{
CachingTest test = new CachingTest();
Console.WriteLine("Data value statement: " + test.value);
Console.ReadLine();
}
}
事实是,t 他的语句总是“CREATE”并且永远不存在,所以我可以假设缓存在 pregram 结束时被杀死。 有没有办法在程序结束时将数据存储在内存中而不破坏它?
【问题讨论】:
-
您正在寻找持久数据存储。 RAM 不是持久的,如果程序结束或计算机关闭 - 它会被清除。使用文件、数据库或更永久的东西。
-
操作系统在将它交给另一个程序之前清除所有返回给它的内存。即使不是这种情况,内存是按页面分配的,它也可能最终位于不同的地址。即使不是这种情况,.net VM 也不会再次为变量使用相同的地址。如果您想要持久性,请将其写入磁盘、数据库、注册表...
-
是的,如果电脑关机,我会重新创建,没问题。我想保留数据直到电脑关机
-
您可以在 CachingTest 类上实现 IDisposable 或“Finalize”析构函数,这样当程序关闭时,您可以将缓存保存在文件或永久数据库中?
标签: c# .net caching memory ram