ConcurrentDictionaryで、指定した値と等しい場合にのみ、キーでエントリを削除できるメソッドを探していました。これは、 TryUpdateと同等ですが、削除するためのものです。
これを行う唯一の方法は、次の方法のようです。
ICollection<KeyValuePair<K, V>>.Remove(KeyValuePair<K, V> keyValuePair)
これはICollectionインターフェイスの明示的な実装です。つまり、Removeを呼び出すことができるように、最初にConcurrentDictionaryをICollectionにキャストする必要があります。
Removeは私が望むことを正確に実行し、そのキャストも大したことではありません。また、ソースコードは、bool matchValue =trueを指定してプライベートメソッドTryRemovalInternalを呼び出すことを示しているため、すべてがきれいに見えます。
ただし、少し心配なのは、ConcurrentDictionaryの楽観的に並行するRemoveメソッドとして文書化されていないため、http://msdn.microsoft.com/en-us/library/dd287153.aspxはICollectionボイラープレートを複製するだけです。方法:ConcurrentDictionaryからアイテムを追加および削除する方法についても、その方法については触れられていません。
それが進むべき道かどうか誰かが知っていますか、それとも私が見逃している他の方法がありますか?