即使访问并发字典,我是否必须应用锁

dsi*_*dsi 0 c# asp.net multithreading concurrentdictionary asp.net-web-api

我在 web api 中使用了一个静态并发字典,它可以被用户访问。

我正在使用以下方法:这些方法都是线程安全的吗?或者我必须添加lock()即使它是ConccurentDictionary

基本上,它是由整个用户访问的,然后它应该能够相应地工作,因为该字典包含每个用户的集合并且它依赖于此。

static ConcurrentDictionary<string, SApp> SAppFarm= new ConcurrentDictionary<string, SApp>();    

.TryRemove(_sessionUser,out s);
.TryAdd(_sessionUser, r);
.GetOrAdd(sessionUser, application);
Run Code Online (Sandbox Code Playgroud)

Ral*_*ing 5

ConcurrentDictionary是它被记录在这里是线程安全的。这包括TryRemove,TryAddGetOrAdd方法。

因此不需要锁定。请记住,线程安全与键有关。如果在不同线程中为给定键更改相同的值对象,则必须注意此更改操作的线程安全性。