Hãy xem xét các tình huống sauphương pháp NET Force hoãn thực hiện
private static ConcurrentDictionary<string, ConcurrentDictionary<string, string>> CachedData;
nơi nhiều đề truy cập vào biến này thông qua một phương pháp gọi
ConcurrentDictionary<string, string> dic = CachedData.GetorAdd(key, HeavyDataLoadMethod())
mà phương pháp này thực hiện một số hoạt động trọng lượng nặng để lấy dữ liệu
private ConcurrentDictionary<string, string> HeavyDataLoadMethod()
{
var data = new ConcurrentDictionary<string,string>(SomeLoad());
foreach (var item in OtherLoad())
//Operations on data
return data;
}
Vấn đề của tôi ở đây là nếu tôi sử dụng GetorAdd
HeavyDataLoadMethod
được thực thi ngay cả khi không cần thiết.
Tôi đã tự hỏi nếu có một số cách để tận dụng lợi thế của hoãn thực hiện trong trường hợp này và làm cho số HeavyDataLoadMethod
bị trì hoãn để nó không được thực hiện cho đến khi nó thực sự cần thiết.
(Vâng, tôi biết điều này là đơn giản như kiểm tra với một containsKey và quên nó đi, nhưng tôi tò mò về cách tiếp cận này)
Cảm ơn bạn đã chỉ ra quá tải của phương thức, chỉ cần những gì cần thiết –