1

我有一个要求,我需要在内存中维护一个列表。

例如 -

list<products>

每个用户都将运行应用程序并从列表中添加新产品/更新产品/删除产品,所有更改都应反映在该列表中。

我正在尝试将列表存储在对象缓存中。

但是当我运行应用程序时,它会创建产品,但是当我第二次运行它时,列表不在缓存中。需要帮助。

以下是代码 -

public class ProductManagement
{

    List<Productlist> _productList;
    ObjectCache cache= MemoryCache.Default;

    public int Createproduct(int id,string productname)
    {
            if (cache.Contains("Productlist"))
            {
                _productList = (List<Productlist>)cache.Get("Productlist");
            }
            else
            {
                _productList = new List<Productlist>();
            }

            Product pro = new Product();
            pro.ID = id;
            pro.ProductName = productname;

            _productList.Add(pro);

            cache.AddOrGetExisting("Productlist", _productList, DateTime.MaxValue);

            return id;
    }

    public Product GetProductbyId(int id)
    {
            if (cache.Contains("Productlist"))
            {
                _productList = (List<Productlist>)cache.Get("Productlist");
            }
            else
            {
                _productList = new List<Productlist>();
            }

            var product = _productList.Single(i => i.ID == id);
            return product;
    }

}

即使应用程序未运行,我如何确保列表是持久的,这可能吗?还如何保持缓存处于活动状态并在下次检索相同的缓存。

非常感谢您的帮助。

4

1 回答 1

0

内存可以不同http://en.wikipedia.org/wiki/Computer_memory。MemoryCache 将信息存储在进程内存中,进程内存仅在进程存在时才存在。

如果您的要求是在进程内存中维护列表 - 您的任务已完成,并且您不需要使用ObjectCache cache= MemoryCache.Default;的更多内容可以将列表保留为ProductManagement.

如果您需要在应用程序启动之间保留列表 - 您需要做额外的工作以在关闭应用程序时将列表写入文件并在打开应用程序时读取它。

于 2013-04-08T00:25:08.700 回答