private async Task SendHeartbeats() { while (!_released) { await _lockManager.SendHeartbeat(_name); await Task.Delay(_heartbeatIntervalInMilliseconds); } }
/// <summary> /// Ensures that the lock is still valid, otherwise tries to re-acquire it. /// </summary> /// <returns></returns> public async Task Renew(CancellationToken cancellationToken = default) { if (Status == DistributedLockStatus.Released) { throw new InvalidOperationException("This lock was explicitly released and cannot be renewed."); } await CheckIsStillLocked(); if (Status == DistributedLockStatus.Acquired) { await _lockManager.SendHeartbeat(_settings); } else { await _lockManager.Acquire(_settings, cancellationToken); Status = DistributedLockStatus.Acquired; } }