我有一个巨大的 XML 文档,我必须对其进行解析以生成域对象。
因为文档很大,我不想每次用户请求它时都解析它,但只是第一次,然后将所有对象保存到缓存中。
public List<Product> GetXMLProducts()
{
if (HttpRuntime.Cache.Get("ProductsXML") != null)
{
return (List<Product>)(HttpRuntime.Cache.Get("ProductsXML"));
}
string xmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content\\Products.xml");
XmlReader reader = XmlReader.Create(xmlPath);
XDocument doc = XDocument.Load(reader);
List<Product> productsList = new List<Product>();
// Parsing the products element
HttpRuntime.Cache.Insert("ProductsXML", productsList);
return productsList;
}
我怎样才能使这个函数在单例中工作并且是线程安全的?
修复了将对象保存到缓存中的方法(是复制粘贴错误)