Tôi đang tìm kiếm một phương thức trong ConcurrentDictionary cho phép tôi xóa một mục nhập bằng khóa, nếu và chỉ nếu giá trị bằng một giá trị mà tôi chỉ định, tương tự như TryUpdate, nhưng để xóa.Phương pháp xóa đồng thời của ConcurrentDictionary Loại bỏ
Phương pháp duy nhất mà thực hiện điều này có vẻ là phương pháp này:
ICollection<KeyValuePair<K, V>>.Remove(KeyValuePair<K, V> keyValuePair)
Nó được thực hiện rõ ràng của giao diện ICollection, nói cách khác, tôi phải bỏ ConcurrentDictionary của tôi để một ICollection đầu tiên vì vậy mà tôi có thể gọi Xóa.
Xóa chính xác những gì tôi muốn và việc truyền đó không phải là vấn đề lớn, cũng như mã nguồn cho thấy nó gọi phương thức riêng TryRemovalInternal với bool matchValue = true, vì vậy tất cả đều đẹp và sạch sẽ. Tuy nhiên, những gì tôi lo ngại là nó không được ghi nhận là phương pháp Remove ConcurrentDictionary đồng thời tối ưu, vì vậy http://msdn.microsoft.com/en-us/library/dd287153.aspx chỉ sao chép bản mẫu ICollection, và How to: Add and Remove Items from a ConcurrentDictionary cũng không đề cập đến phương thức đó.
Có ai biết nếu đó là cách để đi, hoặc có một số phương pháp khác mà tôi đang thiếu?
Có vẻ đúng (vì đó là cùng một phương thức mà 'TryRemove' gọi, chỉ với' matchValue' đặt sai và 'oldValue' mặc định) –
Mặc dù nó không phải là tài liệu chính thức, nó có thể hữu ích: http: // blog. msdn.com/b/pfxteam/archive/2011/04/02/10149222.aspx – alexm
@alexm Điều này là yên tâm đủ - Nếu bạn biến điều đó thành câu trả lời, tôi sẽ chấp nhận nó! MS thực sự nên cập nhật tài liệu của họ, nếu đúng là gần đây họ đã "thấy một vài người yêu cầu hỗ trợ thêm về ConcurrentDictionary" ... –