Как правильно заблокировать объект для вызова метода расширения в C # - PullRequest
0 голосов
/ 07 сентября 2018

Какая разница ниже двух способов блокировки? Я сомневаюсь в значении этого способа блокировки как использования метода расширения и хочу понять внутреннюю работу.

          public static int DoJob(this MapperClass Mapper)
    {
        object MyLock = new object();

        lock (MyLock)
            {
                if (Mapper.MapId != null)
                {
                    //Do some Work
                }
                else                    
                {
                    //Do something else
                }
            }
        }

Способ вызова:

    private void InvokeDoJob(List<MapperClass> Mapper)
    {
        Mapper.ForEach(item =>
        {
           item.DoJob();
        });
    }

и этот InvokeDojob вызывает модель многопоточности.

Подскажите, как будет осуществляться блокировка, и это правильный подход.

Кроме того, какая разница ниже кода делает. Я вижу блокировку только на уровне класса.

            class Department
                {
                    Object thisLock = new Object();
                    int salary;
                    Random r = new Random();
                    public Department(int initial)
                    {
                        salary = initial;
                    }
                    int Withdraw(int amount)
                    {
                        lock (thisLock)
                        {
                            if (salary >= amount)
                            {
                                //Console.WriteLine("salary before Withdrawal :  " + salary);
                                return amount = 10;
                            }
                            else
                            {
                                return amount = 20;
                            }
                        }
                    }
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...