首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ConcurrentDictionary - AddOrUpdate问题

ConcurrentDictionary - AddOrUpdate问题
EN

Stack Overflow用户
提问于 2015-01-30 08:30:59
回答 1查看 700关注 0票数 2

我使用下面的代码试图根据字典对象的键更新它的值。

代码语言:javascript
复制
public static ConcurrentDictionary<string, SingleUserStatisticsViewModel> UsersViewModel = new ConcurrentDictionary<string, SingleUserStatisticsViewModel>();

var userSession = new UserSessionStatistic()
{
    Id = "12345", Browser = "Netscape"
};
var userViewModel = new SingleUserStatisticsViewModel()
{
    UserSessionStatistic = userSession,
    StartTime = DateTime.Now
};

//添加第一次

代码语言:javascript
复制
MyStaticClass.UsersViewModel.AddOrUpdate(userViewModel.UserSessionStatistic.Id, userViewModel, (key, model) => model);

//尝试更新

代码语言:javascript
复制
        var userSession2 = new UserSessionStatistic()
        {
            Id = "12345",
            Browser = "not getting updated????"
        };
        var userViewModel2 = new SingleUserStatisticsViewModel()
        {
            UserSessionStatistic = userSession2,
            StartTime = DateTime.Now
        };

MyStaticClass.UsersViewModel.AddOrUpdate(userViewModel2.UserSessionStatistic.Id, userViewModel2, (key, model) => model);

但是,UsersessionStatistic对象在userViewModel2中并没有在ConcurrentDictionary中得到更新(它的浏览器属性仍然说明了"Netscape"),我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-30 08:58:26

关于价值工厂,医生说

updateValueFactory类型: System.Func :用于根据密钥的现有值为现有密钥生成新值的函数

这意味着你把现有的价值传递给它。您需要用新的更新来更新它:

代码语言:javascript
复制
MyStaticClass.UsersViewModel.AddOrUpdate(userViewModel2.UserSessionStatistic.Id,
                                         userViewModel2, 
                                         (key, oldModel) => userViewModel2);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28231986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档