Блокировка C # - глобальная статическая переменная - PullRequest
0 голосов
/ 01 мая 2018

В моем 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];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...