public async Task <IDisposable> AcquireLock(LockType lockType) { while (true) { EnsureObjectNotDisposed(); var lck = new PersistentLock(_instanceName, lockType, DateTimeOffset.UtcNow, _instanceId, _lockTtl); if (await _lockRepository.TrySave(lck)) { var disposableLock = new DisposableLock(this, lck); return(disposableLock); } await Task.Delay(SleepThreshold); } }
public DisposableLock(LockManager lockManager, PersistentLock lck) { _lockManager = lockManager; _lck = lck; }