Я занимаюсь разработкой веб-приложения с использованием asp.net mvc.
У меня есть список в кеше (список класса продукта моей модели). Итак, я делаю операции CRUD в этом кэшированном списке. Я знаю, что HttpContext.Current.Cache является typeSafe, но список нет. Я хотел бы знать, каков наилучший способ сделать мои операции потокобезопасными, чтобы избежать конфликтов?
Мой код выглядит примерно так:
public static class ProjectCached {
const string key = "ProductList";
// my cached list
public static IList<Product> Products {
get {
if (HttpContext.Current.Cache[key] == null) {
HttpContext.Current.Cache.Insert(key, /* get data from database */, ...);
}
return (List<Product>)HttpContext.Current.Cache[key];
}
}
// my methods (operations on cached list)
public static void Increase(long id) {
var item = Products.FirstOrDefault(x => x.Id == id);
if (item != null) {
item.Prince += 1;
item.LastUpdate = DateTime.Now;
}
}
public static void Remove(long id) {
var item = Products.FirstOrDefault(x => x.Id == id);
if (item != null) {
Products.Remove(item);
}
}
// others methods
}
У меня будет много пользователей, пишущих в этот список одновременно ...
Я знаю, что могу использовать ключевое слово "lock", но где мне это поставить? На моем объекте найден? в моем списке?
спасибо