Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ConcurrentDictionary-添加或更新问题_C#_Concurrentdictionary - Fatal编程技术网

C# ConcurrentDictionary-添加或更新问题

C# ConcurrentDictionary-添加或更新问题,c#,concurrentdictionary,C#,Concurrentdictionary,我正在使用下面的代码尝试根据dictionary对象的键更新该对象中的值 public static ConcurrentDictionary<string, SingleUserStatisticsViewModel> UsersViewModel = new ConcurrentDictionary<string, SingleUserStatisticsViewModel>(); var userSession = new UserSessionStatistic

我正在使用下面的代码尝试根据dictionary对象的键更新该对象中的值

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
};
MyStaticClass.UsersViewModel.AddOrUpdate(userViewModel.UserSessionStatistic.Id, userViewModel, (key, model) => model);
//尝试更新

MyStaticClass.UsersViewModel.AddOrUpdate(userViewModel.UserSessionStatistic.Id, userViewModel, (key, model) => model);
        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);
但是
userViewModel2
中的
UsersessionStatistic
对象在ConcurrentDictionary中没有得到更新(它的浏览器属性仍然是
“Netscape”
),我做错了什么?

关于值工厂,:

MyStaticClass.UsersViewModel.AddOrUpdate(userViewModel.UserSessionStatistic.Id, userViewModel, (key, model) => model);
updateValueFactory类型:System.Func 函数,用于根据 键的现有值

MyStaticClass.UsersViewModel.AddOrUpdate(userViewModel.UserSessionStatistic.Id, userViewModel, (key, model) => model);
这意味着您要将现有值传递给它。您需要将其更新为新的:

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

您确定要添加到同一个ConcurrentDictionary吗?(因为MyStaticClass!=信号静态)。看到你的代码,它应该能工作…@Sharped。是的,我是100%舒尔,都一样ConcurrentDictionary@Sharped. 哦,对不起,那只是个打字错误。我把它修好了,那是因为lambda。lambda将旧值作为参数=>(key,oldValue)=>oldValue查看msdn=>