假设我有一个 Dictionary<string, string>
.字典声明为 public static
在我的控制台程序中。
如果我正在使用线程并且我想做 foreach
关于这个Dictionary
来自一个线程,但同时另一个线程想要将项目添加到字典中。这会导致这里出现错误,因为我们无法修改我们的 Dictionary
。当我们在另一个线程中使用 foreach 循环运行它时。
为了绕过这个问题,我在字典上的每个操作的同一个静态对象上创建了一个锁定语句。
这是绕过这个问题的最好方法吗?我的Dictionary
可以非常大,我可以有很多线程想要在它上面进行 foreach。就目前而言,事情可能会非常缓慢。
最佳答案
尝试使用 ConcurrentDictionary<TKey, TValue>
,就是为这种场景设计的。
有一个很好的教程here关于如何使用它。
关于c# - 在线程内使用全局字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8481718/