public MockOperationLock(bool isHeld = false) { _locked = isHeld ? 1 : 0; if (_locked == 1) { LockInfo = new OperationLockInfo(); } }
public bool Lock(string operationName) { bool acquired = Interlocked.CompareExchange(ref _locked, 1, 0) == 0; if (acquired) { LockInfo = new OperationLockInfo { OperationName = operationName }; } return(acquired); }
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); } }