मैं ConcurrentDictionary में एक विधि की तलाश कर रहा था जो मुझे कुंजी द्वारा एक प्रविष्टि को हटाने की अनुमति देता है, अगर केवल तभी मूल्य निर्दिष्ट होता है जो कि मैं निर्दिष्ट करता हूं, समकक्ष के बराबर कुछ है, लेकिन निकासी के लिए।ConcurrentDictionary की आशावादी रूप से समवर्ती निकालें विधि
एकमात्र तरीका है कि यह करता है इस विधि प्रतीत हो रहा है:
ICollection<KeyValuePair<K, V>>.Remove(KeyValuePair<K, V> keyValuePair)
यह है ICollection इंटरफ़ेस का स्पष्ट कार्यान्वयन, दूसरे शब्दों में, मैं पहली बार एक ICollection करने के लिए अपने ConcurrentDictionary कास्ट करने के लिए है, ताकि मैं निकालें कॉल कर सकते हैं।
निकालें बिल्कुल वही करती है कि मैं क्या चाहते हैं, और है कि कलाकारों, या तो कोई बड़ी बात नहीं है भी स्रोत कोड यह bool matchValue = सच साथ निजी विधि TryRemovalInternal कॉल से पता चलता है, तो यह सब अच्छे और साफ लग रहा है।
मुझे क्या चिंता थोड़ा लेकिन तथ्य यह है कि यह ConcurrentDictionary की आशावादी समवर्ती निकालें विधि के रूप में दर्ज नहीं किया गया है, इसलिए http://msdn.microsoft.com/en-us/library/dd287153.aspx सिर्फ ICollection बॉयलरप्लेट डुप्लिकेट, और How to: Add and Remove Items from a ConcurrentDictionary या तो है कि विधि का उल्लेख नहीं करता है।
क्या किसी को पता है कि यह जाने का तरीका है, या क्या कोई अन्य तरीका है जिसे मैं याद कर रहा हूं?
सही दिखता है (चूंकि यह वही तरीका है जो 'TryRemove' कॉल है, बस' matchValue' सेट के साथ गलत और 'पुराना वैल्यू' डिफॉल्ट किया गया है) –
हालांकि यह आधिकारिक दस्तावेज़ नहीं है, यह सहायक हो सकता है: http: // ब्लॉग। msdn.com/b/pfxteam/archive/2011/04/02/10149222.aspx – alexm
@alexm यह पर्याप्त आश्वस्त है - यदि आप इसे उत्तर में बदल देते हैं, तो मैं इसे स्वीकार करूंगा! एमएस वास्तव में अपने दस्तावेज़ीकरण को अद्यतन करना चाहिए, अगर यह सच है कि हाल ही में उन्होंने "कई लोगों को ConcurrentDictionary पर और समर्थन के लिए कहा है" देखा है ... –