ConcurrentDictionary
Best Practices for Using ConcurrentDictionary | Лучшие практики использования ConcurrentDictionary
https://arbel.net/2013/02/03/best-practices-for-using-concurrentdictionary/
How to improve performance of ConcurrentDictionary.Count in C#
https://stackoverflow.com/questions/41298156/how-to-improve-performance-of-concurrentdictionary-count-in-c-sharp
Дополнение: В некоторых случаях может иметь смысл создание собственной обертки над коллекции и ведения в ней собственного счетчика размера.
Контроль интерфейса обертки позволит четко отслеживать события Добавления/Удаления, для управления счетчиком можно использовать Interlocked операции.
Concurrency структуры в .net. ConcurrentDictionary изнутри
https://habr.com/ru/post/245727/
Под капотом у Dictionary и ConcurrentDictionary
https://habr.com/ru/post/198104/
DotNext | Антон Нечуговских — Как мы написали свой lock-free dictionary
https://www.youtube.com/watch?v=Vs7qp8FNURo