Пример #1
0
 public MockOperationLock(bool isHeld = false)
 {
     _locked = isHeld ? 1 : 0;
     if (_locked == 1)
     {
         LockInfo = new OperationLockInfo();
     }
 }
Пример #2
0
            public bool Lock(string operationName)
            {
                bool acquired = Interlocked.CompareExchange(ref _locked, 1, 0) == 0;

                if (acquired)
                {
                    LockInfo = new OperationLockInfo
                    {
                        OperationName = operationName
                    };
                }
                return(acquired);
            }
Пример #3
0
            public async Task LockAsync(string operationName)
            {
                while (true)
                {
                    if (Interlocked.CompareExchange(ref _locked, 1, 0) == 0)
                    {
                        LockInfo = new OperationLockInfo
                        {
                            OperationName = operationName
                        };

                        return;
                    }
                    await Task.Delay(100);
                }
            }