多线程锁问题
多线程锁问题
cache = (List<CM_ShipFeeDetail>)_memoryCache.Get(shipfeeDetailCacheKey);
if (cache == null || cache.Count == 0)
{
lock (LockTransportRuleList)
{
cache = (List<CM_TransportShipFeeDetail>)_memoryCache.Get(shipfeeDetailCacheKey); //锁后需再次获取缓存,是多线程的,每次都需重新获取缓存,避免多次访问数据库
if (cache == null)
{
Result = _repository.GetDetails(request.CustomerID, true);
if (Result != null && Result.Count > 0)
{
_memoryCache.Set(DetailCacheKey, Result, DateTime.Now.AddMinutes(60));
}
}
}
}