В моем Global.cs есть переменная общедоступного статического словаря с именем «DataDict». Я пытаюсь установить некоторые данные в объект словаря после метода «Post Authentication» в global.cs и использовать его в одном из классов controller / 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];
}
}
}
// Образец - 2
if (Global.DataDict !=null && Global.DataDict.Count > 0)
{
lock (lockObj)
{
var key = GetKeyInfo();
var data = Global.DataDict[key];
}
}