LukeH के जवाब सही है। चूंकि अन्य उत्तरों इंगित करते हैं कि विधि के अर्थशास्त्र को अलग-अलग व्याख्या किया जा सकता है, मुझे लगता है कि AddOrGetExisting
वास्तव में मौजूदा कैश प्रविष्टियों को अपडेट नहीं करेगा।
तो यह कोड
Console.WriteLine(MemoryCache.Default.AddOrGetExisting("test", "one", new CacheItemPolicy()) ?? "(null)");
Console.WriteLine(MemoryCache.Default.AddOrGetExisting("test", "two", new CacheItemPolicy()));
Console.WriteLine(MemoryCache.Default.AddOrGetExisting("test", "three", new CacheItemPolicy()));
(null)
one
one
प्रिंट होगा एक और बात के बारे में पता होना करने के लिए: AddOrGetExisting
एक मौजूदा कैश प्रविष्टि पाता है, यह CachePolicy की नहीं निपटाने के लिए पारित कहते हैं। यह समस्याग्रस्त हो सकता है यदि आप कस्टम परिवर्तन मॉनीटर का उपयोग करते हैं जो महंगे संसाधन ट्रैकिंग तंत्र सेट करते हैं। आम तौर पर, जब कैश प्रविष्टि को निकाल दिया जाता है, तो कैश सिस्टम आपके चेंज मॉनिटर पर Dipose()
पर कॉल करता है। यह आपको घटनाओं को अनियंत्रित करने का मौका देता है। जब AddOrGetExisting
एक मौजूदा प्रविष्टि देता है, हालांकि, आपको इसका ख्याल रखना होगा।
स्रोत
2014-04-14 17:23:11
आलसी http://stackoverflow.com/a/15894928/1575281 –
के साथ संयुक्त उपयोग का एक उदाहरण अच्छा है मुझे खुशी है कि मैं अकेला नहीं हूं ... मैं उस मूल्य को प्राप्त करने की उम्मीद कर रहा था जिसे मैंने अभी पारित किया था पहली कॉल पर वापस, –