Если коллекция является неизменной (только для чтения, никогда не изменяется) после инициализации, и коллекция инициализируется до того, как к ней могут добраться какие-либо потоки, вам не нужно делать ничего особенного.Несколько потоков могут читать из коллекции или словаря одновременно без каких-либо проблем.
Проблемы возникают только тогда, когда общий объект (коллекция) изменяет состояние в результате действий нескольких потоков.Обновление коллекции, когда из нее читают несколько потоков, или если коллекция поддерживает списки внутреннего кэша или еще что-то, что создаст проблему для многопоточного доступа.
Вам даже не нужны явные блокировки для защиты коллекции во время инициализации,если вы установите коллекцию как статический объект, инициализированный в его статическом конструкторе..NET гарантирует, что класс будет инициализирован перед первым использованием.
Вы можете сэкономить много головной боли и работать, если сможете переопределить проблему, чтобы коллекция была неизменной после инициализации.