Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 public DisposableLock(LockManager lockManager, PersistentLock lck)
 {
     _lockManager = lockManager;
     _lck         = lck;
 }