Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单的C#ASP.NET缓存实现_C#_Asp.net_Caching - Fatal编程技术网

简单的C#ASP.NET缓存实现

简单的C#ASP.NET缓存实现,c#,asp.net,caching,C#,Asp.net,Caching,我需要建立一个列表并缓存该列表并能够附加到其中。我还需要能够轻松地将它吹走并重新创建它。实现这一点的简单方法是什么?我发现本教程非常有用 这是一个样本 List<object> list = new List<Object>(); Cache["ObjectList"] = list; // add list = ( List<object>) Cache["ObjectList"]; // retrieve Cache

我需要建立一个
列表
并缓存该列表并能够附加到其中。我还需要能够轻松地将它吹走并重新创建它。实现这一点的简单方法是什么?

我发现本教程非常有用

这是一个样本

List<object> list = new List<Object>();

Cache["ObjectList"] = list;                 // add
list = ( List<object>) Cache["ObjectList"]; // retrieve
Cache.Remove("ObjectList");                 // remove
List List=新列表();
缓存[“ObjectList”]=list;//添加
列表=(列表)缓存[“对象列表”];//检索
Cache.Remove(“ObjectList”);//去除

也许是这样的

using System;
using System.Collections.Generic;
using System.Web;

public class MyListCache
{
    private List<object> _MyList = null;
    public List<object> MyList {
        get {
            if (_MyList == null) {
                _MyList = (HttpContext.Current.Cache["MyList"] as List<object>);
                if (_MyList == null) {
                    _MyList = new List<object>();
                    HttpContext.Current.Cache.Insert("MyList", _MyList);
                }
            }
            return _MyList;
        }
        set {
            HttpContext.Current.Cache.Insert("MyList", _MyList);
        }
    }

    public void ClearList() {
        HttpContext.Current.Cache.Remove("MyList");
    }
}
的缓存部分虽然不简单,但仍然是对缓存中需要考虑的一些有用内容的一个很好的回顾

具体来说,两个类
InMemoryCache
AspNetCache
及其相关测试:


与问题所做的类似,您可以将
HttpRuntime.Cache
HttpContext.Current.Items
HttpContext.Current.Cache
封装在
ICache

的实现中。。。可使用的但我会做一些改变。首先,我总是返回一个有效的列表。如果它不存在,创建一个新的空集合并缓存它,而不是仅仅返回缓存[“MyList”]中的任何内容,它可能为空。是的,Bryan,这个示例非常简单。-但我认真考虑了你的建议,更新了我的样品。谢谢。在许多/大多数现实情况下,您都希望刷新对某种持久性存储的更改。请记住,您的列表不是线程安全的。
// Get an instance
var listCache = new MyListCache();

// Add something
listCache.MyList.Add(someObject);

// Enumerate
foreach(var o in listCache.MyList) {
  Console.WriteLine(o.ToString());
}  

// Blow it away
listCache.ClearList();