正如官方文档上所说的那样,ConcurrentDictionary 的所有公共和受保护的成员都是线程安全的,可从多个线程并发调用。但是,通过一个由 ConcurrentDictionary 实现的接口的成员(包括扩展方法)访问时,并不是线程安全的,此时要特别注意。
如果需要一个包含字典所有项的单独集合,可以通过调用 ConcurrentDictionary.ToArray 方法得到,千万不能使用扩展方法 ToList,因为它不是线程安全的。
参考:
ConcurrentDictionary Is Not Always Thread-Safe
https://docs.microsoft.com/en-us/dotnet/api/system.collections.concurrent.concurrentdictionary-2 ConcurrentDictionary<TKey,TValue> Class