Tôi đang sử dụng Cache
trong một phương pháp dịch vụ web như thế này:Sử dụng 'HttpContext.Current.Cache' một cách an toàn
var pblDataList = (List<blabla>)HttpContext.Current.Cache.Get("pblDataList");
if (pblDataList == null)
{
var PBLData = dc.ExecuteQuery<blabla>(@"SELECT blabla");
pblDataList = PBLData.ToList();
HttpContext.Current.Cache.Add("pblDataList", pblDataList, null,
DateTime.Now.Add(new TimeSpan(0, 0, 15)),
Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
}
Nhưng tôi tự hỏi, là mã này thread-an toàn không? Phương thức dịch vụ web được gọi bởi nhiều người yêu cầu. Và sau đó, một người yêu cầu có thể tìm cách lấy dữ liệu và thêm vào số Cache
cùng lúc trong khi bộ nhớ cache trống.
Truy vấn mất từ 5 đến 8 giây. Sẽ giới thiệu một tuyên bố khóa xung quanh mã này ngăn chặn bất kỳ xung đột có thể có? (Tôi biết rằng nhiều truy vấn có thể chạy đồng thời, nhưng tôi muốn chắc chắn rằng chỉ có một truy vấn đang chạy cùng một lúc.)
Tôi không sử dụng các chủ đề nền, nó chỉ là các cuộc gọi dịch vụ web. Nhân tiện, cảm ơn. –