我在Windows 7上运行VS 2010 Ultimate并尝试使用MemoryCache(System.Runtime.Caching),出于某种原因,当方法结束时以及当我再次重新运行该方法时,会立即清除缓存,它试图创造一个新的。以下是我在MSDN文档中使用的代码:
ObjectCache cache = MemoryCache.Default;
string fileContents = cache["filecontents"] as string;
if (fileContents == null)
{
CacheItemPolicy policy = new CacheItemPolicy();
List<string> filePaths = new List<string>();
filePaths.Add("c:\\Windows\\Enterprise.xml");
// policy.ChangeMonitors.Add(new HostFileChangeMonitor(filePaths));
policy.Priority = CacheItemPriority.NotRemovable;
policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(3600);
// Fetch the file contents.
fileContents =
File.ReadAllText("c:\\Windows\\Enterprise.xml");
cache.Set("filecontents", fileContents, policy);
}
Console.WriteLine(fileContents);
我在Console Main方法中有这段代码。
令人惊讶的是我有一个包装C#4.0程序集,我正在使用QTP,它工作得非常好。缓存在QTP中的每次运行中保持不变。
请帮忙。
答案 0 :(得分:1)
MemoryCache
的生命周期与Visual Studio完全没有关联(你在评论中提到“Visual Studio IDE仍处于打开状态。”
缓存仅在程序运行时可用,因此每次停止并重新启动应用程序时,缓存实际上都是空的。更具体地说,它位于AppDomain的上下文中,它是在您启动应用程序时创建的,并在您的应用程序退出时销毁。
只有当您的应用程序运行超过一个小时时,该策略才会生效。