在我的Global.cs中,有一个公共静态字典变量名“DataDict”。我试图在global.cs中的'Post Authentication'方法之后将一些数据设置为字典对象,并在其中一个控制器/ api类中使用它。我试图防止在多线程环境中破坏数据。编码如样本#1。我的问题是,我可以使用方法#2吗?它将是线程安全的,数据不会被破坏(或)没有锁定问题。思考#1更安全吗?
//示例#1
if (Global.DataDict !=null && Global.DataDict.Count > 0)
{
lock (lockObj)
{
if (Global.DataDict !=null && Global.DataDict.Count > 0)
{
var key = GetKeyInfo();
var data = Global.DataDict[key];
}
}
}
// Sample - 2
if (Global.DataDict !=null && Global.DataDict.Count > 0)
{
lock (lockObj)
{
var key = GetKeyInfo();
var data = Global.DataDict[key];
}
}