C#多线程编程操作Dictionary时经常会遇到已添加了具有相同键的项的错误,我在网上找到了合适的解决方案,就是使用ConcurrentDictionary这个线程安全集合,具体怎么操作呢?可以使用ConcurrentDictionary的TryAdd函数添加新的项目,这样C#底层框架会自动为我们判断线程安全。

先定义线程安全的ConcurrentDictionary实例

static ConcurrentDictionary<string, SiteTemplate> siteTemplates = new ConcurrentDictionary<string, SiteTemplate>();

为字典ConcurrentDictionary添加项目

if (!siteTemplates.ContainsKey(DirectorieName)) siteTemplates.TryAdd(DirectorieName, templateNew);

简单两步就解决了C#中Dictionary的线程安全问题,你的项目中便不会再出现已添加了具有相同键的项错误,参考文章来源于:多线程环境下非安全Dictionary引起的“已添加了具有相同键的项”问题