在从多个线程使用静态字典时,我在将新项目添加到静态字典时遇到问题。我做错了什么想法? 初始化字典:
public static class Server
{
public static volatile Dictionary<int, List<SomeClass>> Values;
}
尝试添加一个项目:
Server.Values.Add(someInt, new List<SomeClass> { elements});
最佳答案
正如 Jon Skeet 所解释的,您正在使用一个不能保证线程安全的对象
尝试使用 ConcurrentDictionary
专为多线程并发场景设计
public static class Server
{
public static ConcurrentDictionary<int, List<SomeClass>> Values =
new ConcurrentDictionary<int, List<SomeClass>>();
}
这里是使用方法
bool added = Server.Values.TryAdd(someInt, new List<SomeClass> { elements});
关于c# - 从多个线程在字典中添加新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39769659/