ReadOnlyDictionary
to tylko opakowanie do dowolnego innego słownika. Jako taki, jest tylko tak bezpieczny dla wątków jak słownik bazowy.
W szczególności, jeśli istnieje wątek modyfikujący podstawowy słownik, podczas gdy inny wątek czyta z opakowania, nie ma gwarancji bezpieczeństwa.
Jeśli chcesz ReadOnlyDictionary
który skutecznie niezmienna od wszystkie kątami, można utworzyć klon oryginalnego słownika utwórz ReadOnlyDictionary
owijkę wokół tego, a potem nie przechowują odniesienia do klonu wszędzie. W przypadku operacji odczytywania , powinno to być bezpieczne dla wątków. Oczywiście, jeśli klucz lub typy wartości są zmienne, to powoduje to niepokój o drugi stopień "braku bezpieczeństwa".
skopiować z dokumentu Microsoft: Bezpieczeństwo wątków Wszystkie publiczne i chronione członkowie ConcurrentDictionary są wątku bezpieczny i może być stosowany jednocześnie z wielu wątków. –
@KenCheung: Nie jest jasne, dlaczego Twój komentarz jest trafny. Pytanie wskazuje, że OP jest już świadomy 'ConcurrentDictionary <,>', ale pyta o bezpieczeństwo 'ReadOnlyDictionary <,>'. –