c# - 从多个线程在字典中添加新项目

标签 c# multithreading dictionary concurrency

在从多个线程使用静态字典时,我在将新项目添加到静态字典时遇到问题。我做错了什么想法? 初始化字典:

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/

相关文章:

java - Camel : PollEnrich generating a lot of Timed Waiting threads

python - python 的任何内置模块都使用线程吗?

python - 将字典写入 .csv

python - Nosetests assert_equal 显然不等于 python ==

c# - Networkstream.Write() 阻塞问题

c# - SignalR 在同一应用程序的不同路径上有多个集线器?

c# - 与 LAN 上的应用程序通信

c# - 如何正确打开登录表单

java - 如何像守护线程一样启动Java主线程?

python - difflib 比较两个 python 字典