1

我在 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 方法中有这段代码。

令人惊讶的是,我有一个从 QTP 使用的包装 C# 4.0 程序集,它工作得非常好。缓存保留在 QTP 中的每次运行时。

请帮忙。

4

1 回答 1

1

的生命周期与MemoryCacheVisual Studio 完全无关(您在评论中提到“Visual Studio IDE 仍处于打开状态”。

缓存仅在程序运行时可用,因此每次停止并重新启动应用程序时,缓存实际上都是空的。更具体地说,它驻留在AppDomain的上下文中,它在您启动应用程序时创建,并在您的应用程序退出时销毁。

只有当您的应用程序运行超过一个小时时,该策略才会生效。

于 2013-06-20T03:30:26.347 回答