Как правильно использывать return при Lock()? - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день, имеется такой код:
        public bool Lock_Update2_test(string MessTocken, string Message)
        {
            //*Используем*маркер*блокировки
            lock (threadLock)
            {
                if (LockSt.Tocken == MessTocken)
                { //Токен совпал
                    return true;
                }
                else
                { //Токен не совпал
                    return false;
                }
            }
        }
Вопрос в том что как поведёт себя Lock если return был вызван до того как была закрыта скобка блока Lock? Блок Lock останется заблокированным или retur также разблокирует lock? Или правильнее делать как: 1) Третий переменной "bool otvet" присваивается ответ рабочей части кода. 2) Происходит разблокирование Lock. 3) Возвращается "return otvet;".
        public bool Lock_Update(string MessTocken, string Message)
        {
            bool otvet = false;
 
            // Используем маркер блокировки
            lock (threadLock)
            {
                if (LockSt.Tocken == MessTocken)
                { //Token sovpal
                    otvet = true; //Otvet samoj funkcii
                }
                else
                { //Token ne sovpal
                    otvet = false; //otvet somoj funkcii
                }
            }
            return otvet;
        }

Решение задачи: «Как правильно использывать return при Lock()?»

textual
Листинг программы
Monitor.Enter(threadLock);
 
try
{
                if (LockSt.Tocken == MessTocken)
                { //Токен совпал
                    return true;
                }
                else
                { //Токен не совпал
                    return false;
                }
}
finally
{
    Monitor.Exit(threadLock);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5
Похожие ответы