c# - 在线程内使用全局字典

标签 c# asp.net c#-4.0

假设我有一个 Dictionary<string, string> .字典声明为 public static在我的控制台程序中。

如果我正在使用线程并且我想做 foreach关于这个Dictionary来自一个线程,但同时另一个线程想要将项目添加到字典中。这会导致这里出现错误,因为我们无法修改我们的 Dictionary。当我们在另一个线程中使用 foreach 循环运行它时。

为了绕过这个问题,我在字典上的每个操作的同一个静态对象上创建了一个锁定语句。

这是绕过这个问题的最好方法吗?我的Dictionary可以非常大,我可以有很多线程想要在它上面进行 foreach。就目前而言,事情可能会非常缓慢。

最佳答案

尝试使用 ConcurrentDictionary<TKey, TValue> ,就是为这种场景设计的。

有一个很好的教程here关于如何使用它。

关于c# - 在线程内使用全局字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8481718/

相关文章:

c# - WPF/MVVM - 检查基于字符串匹配的 MenuItem

c# - c# 中的框架接口(interface)列表

c# - 在 ListView 列中添加图像

javascript - jquery 无法使用超过 1 个函数

Wcf 回调 net tcp 双工只有 1 路故障

mysql - Entity Framework 4.2 模型生成异常

function - 为什么不能用 VAR 返回类型声明函数?

c# - 阻止 VS 将属性值放入 .Designer.cs 文件

asp.net - 是否可以优化ASP.NET WebForms以使其执行速度与ASP.NET MVC一样快?

c# - 如何在回发后维护 Tab 键顺序